[XDK] Add definitions required for newer storage class drivers

Remove duplications in kefuncs and add missing NTKERNELAPI in iofuncs

CORE-17129
This commit is contained in:
Victor Perevertkin 2020-08-28 05:04:23 +03:00
parent 7c909cbc7c
commit 01eb9ba8de
No known key found for this signature in database
GPG key ID: C750B7222E9C7830
5 changed files with 116 additions and 131 deletions

View file

@ -2332,22 +2332,26 @@ IoSetShareAccessEx(
_Out_ PSHARE_ACCESS ShareAccess, _Out_ PSHARE_ACCESS ShareAccess,
_In_ PBOOLEAN WritePermission); _In_ PBOOLEAN WritePermission);
NTKERNELAPI
ULONG ULONG
NTAPI NTAPI
IoSizeofWorkItem(VOID); IoSizeofWorkItem(VOID);
NTKERNELAPI
VOID VOID
NTAPI NTAPI
IoInitializeWorkItem( IoInitializeWorkItem(
_In_ PVOID IoObject, _In_ PVOID IoObject,
_Out_ PIO_WORKITEM IoWorkItem); _Out_ PIO_WORKITEM IoWorkItem);
NTKERNELAPI
VOID VOID
NTAPI NTAPI
IoUninitializeWorkItem( IoUninitializeWorkItem(
_Inout_ PIO_WORKITEM IoWorkItem); _Inout_ PIO_WORKITEM IoWorkItem);
_IRQL_requires_max_(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
NTKERNELAPI
VOID VOID
NTAPI NTAPI
IoQueueWorkItemEx( IoQueueWorkItemEx(
@ -2356,17 +2360,20 @@ IoQueueWorkItemEx(
_In_ WORK_QUEUE_TYPE QueueType, _In_ WORK_QUEUE_TYPE QueueType,
_In_opt_ __drv_aliasesMem PVOID Context); _In_opt_ __drv_aliasesMem PVOID Context);
NTKERNELAPI
IO_PRIORITY_HINT IO_PRIORITY_HINT
NTAPI NTAPI
IoGetIoPriorityHint( IoGetIoPriorityHint(
_In_ PIRP Irp); _In_ PIRP Irp);
NTKERNELAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
IoSetIoPriorityHint( IoSetIoPriorityHint(
_In_ PIRP Irp, _In_ PIRP Irp,
_In_ IO_PRIORITY_HINT PriorityHint); _In_ IO_PRIORITY_HINT PriorityHint);
NTKERNELAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
IoAllocateSfioStreamIdentifier( IoAllocateSfioStreamIdentifier(
@ -2381,6 +2388,7 @@ IoGetSfioStreamIdentifier(
_In_ PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
_In_ PVOID Signature); _In_ PVOID Signature);
NTKERNELAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
IoFreeSfioStreamIdentifier( IoFreeSfioStreamIdentifier(
@ -2437,6 +2445,7 @@ IoUpdateDiskGeometry(
_In_ struct _DISK_GEOMETRY_EX* OldDiskGeometry, _In_ struct _DISK_GEOMETRY_EX* OldDiskGeometry,
_In_ struct _DISK_GEOMETRY_EX* NewDiskGeometry); _In_ struct _DISK_GEOMETRY_EX* NewDiskGeometry);
NTKERNELAPI
PTXN_PARAMETER_BLOCK PTXN_PARAMETER_BLOCK
NTAPI NTAPI
IoGetTransactionParameterBlock( IoGetTransactionParameterBlock(
@ -2462,23 +2471,27 @@ IoCreateFileEx(
_In_ ULONG Options, _In_ ULONG Options,
_In_opt_ PIO_DRIVER_CREATE_CONTEXT DriverContext); _In_opt_ PIO_DRIVER_CREATE_CONTEXT DriverContext);
NTKERNELAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
IoSetIrpExtraCreateParameter( IoSetIrpExtraCreateParameter(
_Inout_ PIRP Irp, _Inout_ PIRP Irp,
_In_ struct _ECP_LIST *ExtraCreateParameter); _In_ struct _ECP_LIST *ExtraCreateParameter);
NTKERNELAPI
VOID VOID
NTAPI NTAPI
IoClearIrpExtraCreateParameter( IoClearIrpExtraCreateParameter(
_Inout_ PIRP Irp); _Inout_ PIRP Irp);
NTKERNELAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
IoGetIrpExtraCreateParameter( IoGetIrpExtraCreateParameter(
_In_ PIRP Irp, _In_ PIRP Irp,
_Outptr_result_maybenull_ struct _ECP_LIST **ExtraCreateParameter); _Outptr_result_maybenull_ struct _ECP_LIST **ExtraCreateParameter);
NTKERNELAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
IoIsFileObjectIgnoringSharing( IoIsFileObjectIgnoringSharing(
@ -2594,6 +2607,35 @@ IoReplaceFileObjectName(
$endif (_NTIFS_) $endif (_NTIFS_)
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
#if (NTDDI_VERSION >= NTDDI_WIN8)
_IRQL_requires_max_(PASSIVE_LEVEL)
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
IoSetDeviceInterfacePropertyData(
_In_ PUNICODE_STRING SymbolicLinkName,
_In_ CONST DEVPROPKEY *PropertyKey,
_In_ LCID Lcid,
_In_ ULONG Flags,
_In_ DEVPROPTYPE Type,
_In_ ULONG Size,
_In_reads_bytes_opt_(Size) PVOID Data);
_IRQL_requires_max_(PASSIVE_LEVEL)
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
IoGetDeviceInterfacePropertyData (
_In_ PUNICODE_STRING SymbolicLinkName,
_In_ CONST DEVPROPKEY *PropertyKey,
_In_ LCID Lcid,
_Reserved_ ULONG Flags,
_In_ ULONG Size,
_Out_writes_bytes_to_(Size, *RequiredSize) PVOID Data,
_Out_ PULONG RequiredSize,
_Out_ PDEVPROPTYPE Type);
#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
$if (_WDMDDK_) $if (_WDMDDK_)
#if defined(_WIN64) #if defined(_WIN64)
NTKERNELAPI NTKERNELAPI

View file

@ -246,6 +246,8 @@ $if (_WDMDDK_)
#define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800 #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
#define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000 #define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000
#define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000 #define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000
#define FILE_PORTABLE_DEVICE 0x00004000
#define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000
/* DEVICE_OBJECT.AlignmentRequirement */ /* DEVICE_OBJECT.AlignmentRequirement */
#define FILE_BYTE_ALIGNMENT 0x00000000 #define FILE_BYTE_ALIGNMENT 0x00000000
@ -1134,7 +1136,10 @@ typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
DeviceUsageTypeUndefined, DeviceUsageTypeUndefined,
DeviceUsageTypePaging, DeviceUsageTypePaging,
DeviceUsageTypeHibernation, DeviceUsageTypeHibernation,
DeviceUsageTypeDumpFile DeviceUsageTypeDumpFile,
DeviceUsageTypeBoot,
DeviceUsageTypePostDisplay,
DeviceUsageTypeGuestAssigned,
} DEVICE_USAGE_NOTIFICATION_TYPE; } DEVICE_USAGE_NOTIFICATION_TYPE;
typedef struct _POWER_SEQUENCE { typedef struct _POWER_SEQUENCE {

View file

@ -1200,67 +1200,6 @@ KeDeregisterProcessorChangeCallback(
$endif (_WDMDDK_) $endif (_WDMDDK_)
$if (_WDMDDK_ || _NTDDK_) $if (_WDMDDK_ || _NTDDK_)
#if (NTDDI_VERSION >= NTDDI_WIN7) #if (NTDDI_VERSION >= NTDDI_WIN7)
$endif (_WDMDDK_ || _NTDDK_)
$if (_WDMDDK_)
_IRQL_requires_max_(DISPATCH_LEVEL)
_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_same_
ULONG64
NTAPI
KeQueryTotalCycleTimeProcess(
_Inout_ PKPROCESS Process,
_Out_ PULONG64 CycleTimeStamp);
_IRQL_requires_max_(APC_LEVEL)
_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_same_
ULONG64
NTAPI
KeQueryTotalCycleTimeThread(
_Inout_ PKTHREAD Thread,
_Out_ PULONG64 CycleTimeStamp);
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
NTAPI
KeSetTargetProcessorDpcEx(
_Inout_ PKDPC Dpc,
_In_ PPROCESSOR_NUMBER ProcNumber);
_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_max_(APC_LEVEL)
NTKERNELAPI
VOID
NTAPI
KeSetSystemGroupAffinityThread(
_In_ PGROUP_AFFINITY Affinity,
_Out_opt_ PGROUP_AFFINITY PreviousAffinity);
_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_max_(APC_LEVEL)
NTKERNELAPI
VOID
NTAPI
KeRevertToUserGroupAffinityThread(
_In_ PGROUP_AFFINITY PreviousAffinity);
_IRQL_requires_max_(DISPATCH_LEVEL)
NTKERNELAPI
BOOLEAN
NTAPI
KeSetCoalescableTimer(
_Inout_ PKTIMER Timer,
_In_ LARGE_INTEGER DueTime,
_In_ ULONG Period,
_In_ ULONG TolerableDelay,
_In_opt_ PKDPC Dpc);
NTKERNELAPI
ULONGLONG
NTAPI
KeQueryUnbiasedInterruptTime(VOID);
NTKERNELAPI NTKERNELAPI
ULONG ULONG
@ -1330,6 +1269,68 @@ KeQueryLogicalProcessorRelationship(
_Out_writes_bytes_opt_(*Length) PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information, _Out_writes_bytes_opt_(*Length) PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information,
_Inout_ PULONG Length); _Inout_ PULONG Length);
$endif (_WDMDDK_ || _NTDDK_)
$if (_WDMDDK_)
_IRQL_requires_max_(DISPATCH_LEVEL)
_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_same_
ULONG64
NTAPI
KeQueryTotalCycleTimeProcess(
_Inout_ PKPROCESS Process,
_Out_ PULONG64 CycleTimeStamp);
_IRQL_requires_max_(APC_LEVEL)
_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_same_
ULONG64
NTAPI
KeQueryTotalCycleTimeThread(
_Inout_ PKTHREAD Thread,
_Out_ PULONG64 CycleTimeStamp);
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
NTAPI
KeSetTargetProcessorDpcEx(
_Inout_ PKDPC Dpc,
_In_ PPROCESSOR_NUMBER ProcNumber);
_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_max_(APC_LEVEL)
NTKERNELAPI
VOID
NTAPI
KeSetSystemGroupAffinityThread(
_In_ PGROUP_AFFINITY Affinity,
_Out_opt_ PGROUP_AFFINITY PreviousAffinity);
_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_max_(APC_LEVEL)
NTKERNELAPI
VOID
NTAPI
KeRevertToUserGroupAffinityThread(
_In_ PGROUP_AFFINITY PreviousAffinity);
_IRQL_requires_max_(DISPATCH_LEVEL)
NTKERNELAPI
BOOLEAN
NTAPI
KeSetCoalescableTimer(
_Inout_ PKTIMER Timer,
_In_ LARGE_INTEGER DueTime,
_In_ ULONG Period,
_In_ ULONG TolerableDelay,
_In_opt_ PKDPC Dpc);
NTKERNELAPI
ULONGLONG
NTAPI
KeQueryUnbiasedInterruptTime(VOID);
_Must_inspect_result_ _Must_inspect_result_
_IRQL_requires_max_(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
_Ret_range_(<=, 0) _Ret_range_(<=, 0)
@ -1363,74 +1364,6 @@ KeGetProcessorIndexFromNumber(
_In_ PPROCESSOR_NUMBER ProcNumber); _In_ PPROCESSOR_NUMBER ProcNumber);
$endif (_WDMDDK_) $endif (_WDMDDK_)
$if (_NTDDK_) $if (_NTDDK_)
NTKERNELAPI
ULONG
NTAPI
KeQueryActiveProcessorCountEx(
_In_ USHORT GroupNumber);
NTKERNELAPI
ULONG
NTAPI
KeQueryMaximumProcessorCountEx(
_In_ USHORT GroupNumber);
NTKERNELAPI
USHORT
NTAPI
KeQueryActiveGroupCount(VOID);
NTKERNELAPI
USHORT
NTAPI
KeQueryMaximumGroupCount(VOID);
NTKERNELAPI
KAFFINITY
NTAPI
KeQueryGroupAffinity(
_In_ USHORT GroupNumber);
NTKERNELAPI
ULONG
NTAPI
KeGetCurrentProcessorNumberEx(
_Out_opt_ PPROCESSOR_NUMBER ProcNumber);
NTKERNELAPI
VOID
NTAPI
KeQueryNodeActiveAffinity(
_In_ USHORT NodeNumber,
_Out_opt_ PGROUP_AFFINITY Affinity,
_Out_opt_ PUSHORT Count);
NTKERNELAPI
USHORT
NTAPI
KeQueryNodeMaximumProcessorCount(
_In_ USHORT NodeNumber);
NTKERNELAPI
USHORT
NTAPI
KeQueryHighestNodeNumber(VOID);
NTKERNELAPI
USHORT
NTAPI
KeGetCurrentNodeNumber(VOID);
_IRQL_requires_max_(DISPATCH_LEVEL)
NTKERNELAPI
NTSTATUS
NTAPI
KeQueryLogicalProcessorRelationship(
_In_opt_ PPROCESSOR_NUMBER ProcessorNumber,
_In_ LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
_Out_writes_bytes_opt_(*Length) PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information,
_Inout_ PULONG Length);
_IRQL_requires_max_(APC_LEVEL) _IRQL_requires_max_(APC_LEVEL)
NTKERNELAPI NTKERNELAPI
NTSTATUS NTSTATUS

View file

@ -294,6 +294,7 @@ DEFINE_GUID(GUID_CONSOLE_DISPLAY_STATE, 0x6fe69556, 0x704a, 0x47a0, 0x8f, 0x24,
DEFINE_GUID(GUID_ALLOW_DISPLAY_REQUIRED, 0xA9CEB8DA, 0xCD46, 0x44FB, 0xA9, 0x8B, 0x02, 0xAF, 0x69, 0xDE, 0x46, 0x23); DEFINE_GUID(GUID_ALLOW_DISPLAY_REQUIRED, 0xA9CEB8DA, 0xCD46, 0x44FB, 0xA9, 0x8B, 0x02, 0xAF, 0x69, 0xDE, 0x46, 0x23);
DEFINE_GUID(GUID_DISK_SUBGROUP, 0x0012EE47, 0x9041, 0x4B5D, 0x9B, 0x77, 0x53, 0x5F, 0xBA, 0x8B, 0x14, 0x42); DEFINE_GUID(GUID_DISK_SUBGROUP, 0x0012EE47, 0x9041, 0x4B5D, 0x9B, 0x77, 0x53, 0x5F, 0xBA, 0x8B, 0x14, 0x42);
DEFINE_GUID(GUID_DISK_POWERDOWN_TIMEOUT, 0x6738E2C4, 0xE8A5, 0x4A42, 0xB1, 0x6A, 0xE0, 0x40, 0xE7, 0x69, 0x75, 0x6E); DEFINE_GUID(GUID_DISK_POWERDOWN_TIMEOUT, 0x6738E2C4, 0xE8A5, 0x4A42, 0xB1, 0x6A, 0xE0, 0x40, 0xE7, 0x69, 0x75, 0x6E);
DEFINE_GUID(GUID_DISK_IDLE_TIMEOUT, 0x58E39BA8, 0xB8E6, 0x4EF6, 0x90, 0xD0, 0x89, 0xAE, 0x32, 0xB2, 0x58, 0xD6);
DEFINE_GUID(GUID_DISK_BURST_IGNORE_THRESHOLD, 0x80e3c60e, 0xbb94, 0x4ad8, 0xbb, 0xe0, 0x0d, 0x31, 0x95, 0xef, 0xc6, 0x63); DEFINE_GUID(GUID_DISK_BURST_IGNORE_THRESHOLD, 0x80e3c60e, 0xbb94, 0x4ad8, 0xbb, 0xe0, 0x0d, 0x31, 0x95, 0xef, 0xc6, 0x63);
DEFINE_GUID(GUID_DISK_ADAPTIVE_POWERDOWN, 0x396A32E1, 0x499A, 0x40B2, 0x91, 0x24, 0xA9, 0x6A, 0xFE, 0x70, 0x76, 0x67); DEFINE_GUID(GUID_DISK_ADAPTIVE_POWERDOWN, 0x396A32E1, 0x499A, 0x40B2, 0x91, 0x24, 0xA9, 0x6A, 0xFE, 0x70, 0x76, 0x67);
DEFINE_GUID(GUID_SLEEP_SUBGROUP, 0x238C9FA8, 0x0AAD, 0x41ED, 0x83, 0xF4, 0x97, 0xBE, 0x24, 0x2C, 0x8F, 0x20); DEFINE_GUID(GUID_SLEEP_SUBGROUP, 0x238C9FA8, 0x0AAD, 0x41ED, 0x83, 0xF4, 0x97, 0xBE, 0x24, 0x2C, 0x8F, 0x20);

View file

@ -21,6 +21,9 @@ $if (_WDMDDK_)
#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
#define RTL_QUERY_REGISTRY_DIRECT 0x00000020 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
#define RTL_QUERY_REGISTRY_DELETE 0x00000040 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
#define RTL_QUERY_REGISTRY_TYPECHECK 0x00000100
#define RTL_QUERY_REGISTRY_TYPECHECK_SHIFT 24
#define HASH_STRING_ALGORITHM_DEFAULT 0 #define HASH_STRING_ALGORITHM_DEFAULT 0
#define HASH_STRING_ALGORITHM_X65599 1 #define HASH_STRING_ALGORITHM_X65599 1
@ -40,13 +43,14 @@ _Function_class_(RTL_QUERY_REGISTRY_ROUTINE)
_IRQL_requires_max_(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
_IRQL_requires_same_ _IRQL_requires_same_
typedef NTSTATUS typedef NTSTATUS
(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)( (NTAPI RTL_QUERY_REGISTRY_ROUTINE)(
_In_z_ PWSTR ValueName, _In_z_ PWSTR ValueName,
_In_ ULONG ValueType, _In_ ULONG ValueType,
_In_reads_bytes_opt_(ValueLength) PVOID ValueData, _In_reads_bytes_opt_(ValueLength) PVOID ValueData,
_In_ ULONG ValueLength, _In_ ULONG ValueLength,
_In_opt_ PVOID Context, _In_opt_ PVOID Context,
_In_opt_ PVOID EntryContext); _In_opt_ PVOID EntryContext);
typedef RTL_QUERY_REGISTRY_ROUTINE *PRTL_QUERY_REGISTRY_ROUTINE;
typedef struct _RTL_QUERY_REGISTRY_TABLE { typedef struct _RTL_QUERY_REGISTRY_TABLE {
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine; PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;