From 01eb9ba8de4bed03cd67049b158acb3faec5dc8b Mon Sep 17 00:00:00 2001 From: Victor Perevertkin Date: Fri, 28 Aug 2020 05:04:23 +0300 Subject: [PATCH] [XDK] Add definitions required for newer storage class drivers Remove duplications in kefuncs and add missing NTKERNELAPI in iofuncs CORE-17129 --- sdk/include/xdk/iofuncs.h | 42 ++++++++ sdk/include/xdk/iotypes.h | 7 +- sdk/include/xdk/kefuncs.h | 191 ++++++++++++------------------------- sdk/include/xdk/potypes.h | 1 + sdk/include/xdk/rtltypes.h | 6 +- 5 files changed, 116 insertions(+), 131 deletions(-) diff --git a/sdk/include/xdk/iofuncs.h b/sdk/include/xdk/iofuncs.h index 7fb9a3b4ea9..3299e53632a 100644 --- a/sdk/include/xdk/iofuncs.h +++ b/sdk/include/xdk/iofuncs.h @@ -2332,22 +2332,26 @@ IoSetShareAccessEx( _Out_ PSHARE_ACCESS ShareAccess, _In_ PBOOLEAN WritePermission); +NTKERNELAPI ULONG NTAPI IoSizeofWorkItem(VOID); +NTKERNELAPI VOID NTAPI IoInitializeWorkItem( _In_ PVOID IoObject, _Out_ PIO_WORKITEM IoWorkItem); +NTKERNELAPI VOID NTAPI IoUninitializeWorkItem( _Inout_ PIO_WORKITEM IoWorkItem); _IRQL_requires_max_(DISPATCH_LEVEL) +NTKERNELAPI VOID NTAPI IoQueueWorkItemEx( @@ -2356,17 +2360,20 @@ IoQueueWorkItemEx( _In_ WORK_QUEUE_TYPE QueueType, _In_opt_ __drv_aliasesMem PVOID Context); +NTKERNELAPI IO_PRIORITY_HINT NTAPI IoGetIoPriorityHint( _In_ PIRP Irp); +NTKERNELAPI NTSTATUS NTAPI IoSetIoPriorityHint( _In_ PIRP Irp, _In_ IO_PRIORITY_HINT PriorityHint); +NTKERNELAPI NTSTATUS NTAPI IoAllocateSfioStreamIdentifier( @@ -2381,6 +2388,7 @@ IoGetSfioStreamIdentifier( _In_ PFILE_OBJECT FileObject, _In_ PVOID Signature); +NTKERNELAPI NTSTATUS NTAPI IoFreeSfioStreamIdentifier( @@ -2437,6 +2445,7 @@ IoUpdateDiskGeometry( _In_ struct _DISK_GEOMETRY_EX* OldDiskGeometry, _In_ struct _DISK_GEOMETRY_EX* NewDiskGeometry); +NTKERNELAPI PTXN_PARAMETER_BLOCK NTAPI IoGetTransactionParameterBlock( @@ -2462,23 +2471,27 @@ IoCreateFileEx( _In_ ULONG Options, _In_opt_ PIO_DRIVER_CREATE_CONTEXT DriverContext); +NTKERNELAPI NTSTATUS NTAPI IoSetIrpExtraCreateParameter( _Inout_ PIRP Irp, _In_ struct _ECP_LIST *ExtraCreateParameter); +NTKERNELAPI VOID NTAPI IoClearIrpExtraCreateParameter( _Inout_ PIRP Irp); +NTKERNELAPI NTSTATUS NTAPI IoGetIrpExtraCreateParameter( _In_ PIRP Irp, _Outptr_result_maybenull_ struct _ECP_LIST **ExtraCreateParameter); +NTKERNELAPI BOOLEAN NTAPI IoIsFileObjectIgnoringSharing( @@ -2594,6 +2607,35 @@ IoReplaceFileObjectName( $endif (_NTIFS_) #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 defined(_WIN64) NTKERNELAPI diff --git a/sdk/include/xdk/iotypes.h b/sdk/include/xdk/iotypes.h index 5a40a71f6a5..d53d9371532 100644 --- a/sdk/include/xdk/iotypes.h +++ b/sdk/include/xdk/iotypes.h @@ -246,6 +246,8 @@ $if (_WDMDDK_) #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800 #define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000 #define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000 +#define FILE_PORTABLE_DEVICE 0x00004000 +#define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000 /* DEVICE_OBJECT.AlignmentRequirement */ #define FILE_BYTE_ALIGNMENT 0x00000000 @@ -1134,7 +1136,10 @@ typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE { DeviceUsageTypeUndefined, DeviceUsageTypePaging, DeviceUsageTypeHibernation, - DeviceUsageTypeDumpFile + DeviceUsageTypeDumpFile, + DeviceUsageTypeBoot, + DeviceUsageTypePostDisplay, + DeviceUsageTypeGuestAssigned, } DEVICE_USAGE_NOTIFICATION_TYPE; typedef struct _POWER_SEQUENCE { diff --git a/sdk/include/xdk/kefuncs.h b/sdk/include/xdk/kefuncs.h index aa8597b56fe..2cfe56348b0 100644 --- a/sdk/include/xdk/kefuncs.h +++ b/sdk/include/xdk/kefuncs.h @@ -1200,67 +1200,6 @@ KeDeregisterProcessorChangeCallback( $endif (_WDMDDK_) $if (_WDMDDK_ || _NTDDK_) #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 ULONG @@ -1330,6 +1269,68 @@ KeQueryLogicalProcessorRelationship( _Out_writes_bytes_opt_(*Length) PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information, _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_ _IRQL_requires_max_(DISPATCH_LEVEL) _Ret_range_(<=, 0) @@ -1363,74 +1364,6 @@ KeGetProcessorIndexFromNumber( _In_ PPROCESSOR_NUMBER ProcNumber); $endif (_WDMDDK_) $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) NTKERNELAPI NTSTATUS diff --git a/sdk/include/xdk/potypes.h b/sdk/include/xdk/potypes.h index c720d260d87..43ee700c8bb 100644 --- a/sdk/include/xdk/potypes.h +++ b/sdk/include/xdk/potypes.h @@ -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_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_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_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); diff --git a/sdk/include/xdk/rtltypes.h b/sdk/include/xdk/rtltypes.h index 51190a204d9..527d3ed67ce 100644 --- a/sdk/include/xdk/rtltypes.h +++ b/sdk/include/xdk/rtltypes.h @@ -21,6 +21,9 @@ $if (_WDMDDK_) #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020 #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_X65599 1 @@ -40,13 +43,14 @@ _Function_class_(RTL_QUERY_REGISTRY_ROUTINE) _IRQL_requires_max_(PASSIVE_LEVEL) _IRQL_requires_same_ typedef NTSTATUS -(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)( +(NTAPI RTL_QUERY_REGISTRY_ROUTINE)( _In_z_ PWSTR ValueName, _In_ ULONG ValueType, _In_reads_bytes_opt_(ValueLength) PVOID ValueData, _In_ ULONG ValueLength, _In_opt_ PVOID Context, _In_opt_ PVOID EntryContext); +typedef RTL_QUERY_REGISTRY_ROUTINE *PRTL_QUERY_REGISTRY_ROUTINE; typedef struct _RTL_QUERY_REGISTRY_TABLE { PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;