- Add devpropdef.h and evntprov.h
- Fix UOW redefinition.
[DDK]
- Fix PGUID redefinition.
[XDK]
- Add wmitypes.h and include it in wdm.h autogeneration template.
- Move several definitions to their appropriate places.
- Add HalGetDmaAlignment, LEGACY_BUS_INFORMATION, IO_DEVICE_EJECT_CALLBACK, PLUGPLAY_PROPERTY_PERSISTENT, and several missing Io*, DEVICE_*, REENUMERATE_*, PCI_*, PNP_*, Ob*, OB_*, PO_*, Wmi*, Etw* and ACPI related definitions.
- Add CmKeyObjectType to exported object types.
- Fix UOW redefinition.
- Group some related definitions.
[WDM]
- Update wdm.h to reflect XDK changes.

svn path=/branches/header-work/; revision=46329
This commit is contained in:
Amine Khaldi 2010-03-22 01:00:05 +00:00
parent e9047cd524
commit b5c5fd533b
15 changed files with 3374 additions and 426 deletions

View file

@ -12,7 +12,10 @@ extern "C" {
#endif
#define STDMETHODCALLTYPE __stdcall
#ifndef _WDMDDK_
typedef GUID *PGUID;
#endif
/* Types */

File diff suppressed because it is too large Load diff

84
include/psdk/devpropdef.h Normal file
View file

@ -0,0 +1,84 @@
#ifndef _DEVPROPDEF_H_
#define _DEVPROPDEF_H_
typedef ULONG DEVPROPTYPE, *PDEVPROPTYPE;
#define DEVPROP_TYPEMOD_ARRAY 0x00001000
#define DEVPROP_TYPEMOD_LIST 0x00002000
#define DEVPROP_TYPE_EMPTY 0x00000000
#define DEVPROP_TYPE_NULL 0x00000001
#define DEVPROP_TYPE_SBYTE 0x00000002
#define DEVPROP_TYPE_BYTE 0x00000003
#define DEVPROP_TYPE_INT16 0x00000004
#define DEVPROP_TYPE_UINT16 0x00000005
#define DEVPROP_TYPE_INT32 0x00000006
#define DEVPROP_TYPE_UINT32 0x00000007
#define DEVPROP_TYPE_INT64 0x00000008
#define DEVPROP_TYPE_UINT64 0x00000009
#define DEVPROP_TYPE_FLOAT 0x0000000A
#define DEVPROP_TYPE_DOUBLE 0x0000000B
#define DEVPROP_TYPE_DECIMAL 0x0000000C
#define DEVPROP_TYPE_GUID 0x0000000D
#define DEVPROP_TYPE_CURRENCY 0x0000000E
#define DEVPROP_TYPE_DATE 0x0000000F
#define DEVPROP_TYPE_FILETIME 0x00000010
#define DEVPROP_TYPE_BOOLEAN 0x00000011
#define DEVPROP_TYPE_STRING 0x00000012
#define DEVPROP_TYPE_STRING_LIST (DEVPROP_TYPE_STRING|DEVPROP_TYPEMOD_LIST)
#define DEVPROP_TYPE_SECURITY_DESCRIPTOR 0x00000013
#define DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING 0x00000014
#define DEVPROP_TYPE_DEVPROPKEY 0x00000015
#define DEVPROP_TYPE_DEVPROPTYPE 0x00000016
#define DEVPROP_TYPE_BINARY (DEVPROP_TYPE_BYTE|DEVPROP_TYPEMOD_ARRAY)
#define DEVPROP_TYPE_ERROR 0x00000017
#define DEVPROP_TYPE_NTSTATUS 0x00000018
#define DEVPROP_TYPE_STRING_INDIRECT 0x00000019
#define MAX_DEVPROP_TYPE 0x00000019
#define MAX_DEVPROP_TYPEMOD 0x00002000
#define DEVPROP_MASK_TYPE 0x00000FFF
#define DEVPROP_MASK_TYPEMOD 0x0000F000
typedef CHAR DEVPROP_BOOLEAN, *PDEVPROP_BOOLEAN;
#define DEVPROP_TRUE ((DEVPROP_BOOLEAN)-1)
#define DEVPROP_FALSE ((DEVPROP_BOOLEAN) 0)
#ifndef DEVPROPKEY_DEFINED
#define DEVPROPKEY_DEFINED
typedef GUID DEVPROPGUID, *PDEVPROPGUID;
typedef ULONG DEVPROPID, *PDEVPROPID;
typedef struct _DEVPROPKEY {
DEVPROPGUID fmtid;
DEVPROPID pid;
} DEVPROPKEY, *PDEVPROPKEY;
#endif /* DEVPROPKEY_DEFINED */
#define DEVPROPID_FIRST_USABLE 2
#endif /* _DEVPROPDEF_H_ */
#ifdef DEFINE_DEVPROPKEY
#undef DEFINE_DEVPROPKEY
#endif
#ifdef INITGUID
#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY DECLSPEC_SELECTANY name = {{ l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}}, pid}
#else
#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY name
#endif /* INITGUID */
#ifndef IsEqualDevPropKey
#ifdef __cplusplus
#define IsEqualDevPropKey(a, b) (((a).pid == (b).pid) && IsEqualIID((a).fmtid, (b).fmtid))
#else
#define IsEqualDevPropKey(a, b) (((a).pid == (b).pid) && IsEqualIID(&(a).fmtid, &(b).fmtid))
#endif
#endif /* !IsEqualDevPropKey */

335
include/psdk/evntprov.h Normal file
View file

@ -0,0 +1,335 @@
#pragma once
#ifndef EVNTAPI
#ifndef MIDL_PASS
#ifdef _EVNT_SOURCE_
#define EVNTAPI __stdcall
#else
#define EVNTAPI DECLSPEC_IMPORT __stdcall
#endif /* _EVNT_SOURCE_ */
#endif /* MIDL_PASS */
#endif /* EVNTAPI */
#ifdef __cplusplus
extern "C" {
#endif
#define EVENT_MIN_LEVEL (0)
#define EVENT_MAX_LEVEL (0xff)
#define EVENT_ACTIVITY_CTRL_GET_ID (1)
#define EVENT_ACTIVITY_CTRL_SET_ID (2)
#define EVENT_ACTIVITY_CTRL_CREATE_ID (3)
#define EVENT_ACTIVITY_CTRL_GET_SET_ID (4)
#define EVENT_ACTIVITY_CTRL_CREATE_SET_ID (5)
typedef ULONGLONG REGHANDLE, *PREGHANDLE;
#define MAX_EVENT_DATA_DESCRIPTORS (128)
#define MAX_EVENT_FILTER_DATA_SIZE (1024)
#define EVENT_FILTER_TYPE_SCHEMATIZED (0x80000000)
typedef struct _EVENT_DATA_DESCRIPTOR {
ULONGLONG Ptr;
ULONG Size;
ULONG Reserved;
} EVENT_DATA_DESCRIPTOR, *PEVENT_DATA_DESCRIPTOR;
typedef struct _EVENT_DESCRIPTOR {
USHORT Id;
UCHAR Version;
UCHAR Channel;
UCHAR Level;
UCHAR Opcode;
USHORT Task;
ULONGLONG Keyword;
} EVENT_DESCRIPTOR, *PEVENT_DESCRIPTOR;
typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR;
typedef struct _EVENT_FILTER_DESCRIPTOR {
ULONGLONG Ptr;
ULONG Size;
ULONG Type;
} EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR;
typedef struct _EVENT_FILTER_HEADER {
USHORT Id;
UCHAR Version;
UCHAR Reserved[5];
ULONGLONG InstanceId;
ULONG Size;
ULONG NextOffset;
} EVENT_FILTER_HEADER, *PEVENT_FILTER_HEADER;
#ifndef _ETW_KM_
typedef VOID
(NTAPI *PENABLECALLBACK)(
IN LPCGUID SourceId,
IN ULONG IsEnabled,
IN UCHAR Level,
IN ULONGLONG MatchAnyKeyword,
IN ULONGLONG MatchAllKeyword,
IN PEVENT_FILTER_DESCRIPTOR FilterData OPTIONAL,
IN OUT PVOID CallbackContext OPTIONAL);
#if (WINVER >= _WIN32_WINNT_VISTA)
ULONG
EVNTAPI
EventRegister(
IN LPCGUID ProviderId,
IN PENABLECALLBACK EnableCallback OPTIONAL,
IN PVOID CallbackContext OPTIONAL,
OUT PREGHANDLE RegHandle);
ULONG
EVNTAPI
EventUnregister(
IN REGHANDLE RegHandle);
BOOLEAN
EVNTAPI
EventEnabled(
IN REGHANDLE RegHandle,
IN PCEVENT_DESCRIPTOR EventDescriptor);
BOOLEAN
EVNTAPI
EventProviderEnabled(
IN REGHANDLE RegHandle,
IN UCHAR Level,
IN ULONGLONG Keyword);
ULONG
EVNTAPI
EventWrite(
IN REGHANDLE RegHandle,
IN PCEVENT_DESCRIPTOR EventDescriptor,
IN ULONG UserDataCount,
IN PEVENT_DATA_DESCRIPTOR UserData);
ULONG
EVNTAPI
EventWriteTransfer(
IN REGHANDLE RegHandle,
IN PCEVENT_DESCRIPTOR EventDescriptor,
IN LPCGUID ActivityId OPTIONAL,
IN LPCGUID RelatedActivityId OPTIONAL,
IN ULONG UserDataCount,
IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL);
ULONG
EVNTAPI
EventWriteString(
IN REGHANDLE RegHandle,
IN UCHAR Level,
IN ULONGLONG Keyword,
IN PCWSTR String);
ULONG
EVNTAPI
EventActivityIdControl(
IN ULONG ControlCode,
IN OUT LPGUID ActivityId);
#endif /* (WINVER >= _WIN32_WINNT_VISTA) */
#if (WINVER >= _WIN32_WINNT_WIN7)
ULONG
EVNTAPI
EventWriteEx(
IN REGHANDLE RegHandle,
IN PCEVENT_DESCRIPTOR EventDescriptor,
IN ULONG64 Filter,
IN ULONG Flags,
IN LPCGUID ActivityId OPTIONAL,
IN LPCGUID RelatedActivityId OPTIONAL,
IN ULONG UserDataCount,
IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL);
#endif
#endif // _ETW_KM_
FORCEINLINE
VOID
EventDataDescCreate(
OUT PEVENT_DATA_DESCRIPTOR EventDataDescriptor,
IN const VOID* DataPtr,
IN ULONG DataSize)
{
EventDataDescriptor->Ptr = (ULONGLONG)(ULONG_PTR)DataPtr;
EventDataDescriptor->Size = DataSize;
EventDataDescriptor->Reserved = 0;
}
FORCEINLINE
VOID
EventDescCreate(
OUT PEVENT_DESCRIPTOR EventDescriptor,
IN USHORT Id,
IN UCHAR Version,
IN UCHAR Channel,
IN UCHAR Level,
IN USHORT Task,
IN UCHAR Opcode,
IN ULONGLONG Keyword)
{
EventDescriptor->Id = Id;
EventDescriptor->Version = Version;
EventDescriptor->Channel = Channel;
EventDescriptor->Level = Level;
EventDescriptor->Task = Task;
EventDescriptor->Opcode = Opcode;
EventDescriptor->Keyword = Keyword;
}
FORCEINLINE
VOID
EventDescZero(
OUT PEVENT_DESCRIPTOR EventDescriptor)
{
memset(EventDescriptor, 0, sizeof(EVENT_DESCRIPTOR));
}
FORCEINLINE
USHORT
EventDescGetId(
IN PCEVENT_DESCRIPTOR EventDescriptor)
{
return (EventDescriptor->Id);
}
FORCEINLINE
UCHAR
EventDescGetVersion(
IN PCEVENT_DESCRIPTOR EventDescriptor)
{
return (EventDescriptor->Version);
}
FORCEINLINE
USHORT
EventDescGetTask(
IN PCEVENT_DESCRIPTOR EventDescriptor)
{
return (EventDescriptor->Task);
}
FORCEINLINE
UCHAR
EventDescGetOpcode(
IN PCEVENT_DESCRIPTOR EventDescriptor)
{
return (EventDescriptor->Opcode);
}
FORCEINLINE
UCHAR
EventDescGetChannel(
IN PCEVENT_DESCRIPTOR EventDescriptor)
{
return (EventDescriptor->Channel);
}
FORCEINLINE
UCHAR
EventDescGetLevel(
IN PCEVENT_DESCRIPTOR EventDescriptor)
{
return (EventDescriptor->Level);
}
FORCEINLINE
ULONGLONG
EventDescGetKeyword(
IN PCEVENT_DESCRIPTOR EventDescriptor)
{
return (EventDescriptor->Keyword);
}
FORCEINLINE
PEVENT_DESCRIPTOR
EventDescSetId(
IN PEVENT_DESCRIPTOR EventDescriptor,
IN USHORT Id)
{
EventDescriptor->Id = Id;
return (EventDescriptor);
}
FORCEINLINE
PEVENT_DESCRIPTOR
EventDescSetVersion(
IN PEVENT_DESCRIPTOR EventDescriptor,
IN UCHAR Version)
{
EventDescriptor->Version = Version;
return (EventDescriptor);
}
FORCEINLINE
PEVENT_DESCRIPTOR
EventDescSetTask(
IN PEVENT_DESCRIPTOR EventDescriptor,
IN USHORT Task)
{
EventDescriptor->Task = Task;
return (EventDescriptor);
}
FORCEINLINE
PEVENT_DESCRIPTOR
EventDescSetOpcode(
IN PEVENT_DESCRIPTOR EventDescriptor,
IN UCHAR Opcode)
{
EventDescriptor->Opcode = Opcode;
return (EventDescriptor);
}
FORCEINLINE
PEVENT_DESCRIPTOR
EventDescSetLevel(
IN PEVENT_DESCRIPTOR EventDescriptor,
IN UCHAR Level)
{
EventDescriptor->Level = Level;
return (EventDescriptor);
}
FORCEINLINE
PEVENT_DESCRIPTOR
EventDescSetChannel(
IN PEVENT_DESCRIPTOR EventDescriptor,
IN UCHAR Channel)
{
EventDescriptor->Channel = Channel;
return (EventDescriptor);
}
FORCEINLINE
PEVENT_DESCRIPTOR
EventDescSetKeyword(
IN PEVENT_DESCRIPTOR EventDescriptor,
IN ULONGLONG Keyword)
{
EventDescriptor->Keyword = Keyword;
return (EventDescriptor);
}
FORCEINLINE
PEVENT_DESCRIPTOR
EventDescOrKeyword(
IN PEVENT_DESCRIPTOR EventDescriptor,
IN ULONGLONG Keyword)
{
EventDescriptor->Keyword |= Keyword;
return (EventDescriptor);
}
#ifdef __cplusplus
}
#endif

View file

@ -72,7 +72,10 @@
#define MAX_TRANSACTION_DESCRIPTION_LENGTH 64
#define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64
#ifndef _WDMDDK_
typedef GUID UOW, *PUOW;
#endif
typedef GUID CRM_PROTOCOL_ID, *PCRM_PROTOCOL_ID;
typedef ULONG NOTIFICATION_MASK;
typedef ULONG SAVEPOINT_ID, *PSAVEPOINT_ID;

View file

@ -50,5 +50,19 @@ HalReadDmaCounter(
return counter;
}
FORCEINLINE
ULONG
HalGetDmaAlignment(
IN PDMA_ADAPTER DmaAdapter)
{
PGET_DMA_ALIGNMENT getDmaAlignment;
ULONG alignment;
getDmaAlignment = *(DmaAdapter)->DmaOperations->GetDmaAlignment;
ASSERT( getDmaAlignment != NULL );
alignment = getDmaAlignment( DmaAdapter );
return alignment;
}
#endif

View file

@ -1498,10 +1498,54 @@ IoFreeSfioStreamIdentifier(
IN PFILE_OBJECT FileObject,
IN PVOID Signature);
NTKERNELAPI
NTSTATUS
NTAPI
IoRequestDeviceEjectEx(
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN PIO_DEVICE_EJECT_CALLBACK Callback OPTIONAL,
IN PVOID Context OPTIONAL,
IN PDRIVER_OBJECT DriverObject OPTIONAL);
NTKERNELAPI
NTSTATUS
NTAPI
IoSetDevicePropertyData(
IN PDEVICE_OBJECT Pdo,
IN CONST DEVPROPKEY *PropertyKey,
IN LCID Lcid,
IN ULONG Flags,
IN DEVPROPTYPE Type,
IN ULONG Size,
IN PVOID Data OPTIONAL);
NTKERNELAPI
NTSTATUS
NTAPI
IoGetDevicePropertyData(
PDEVICE_OBJECT Pdo,
CONST DEVPROPKEY *PropertyKey,
LCID Lcid,
ULONG Flags,
ULONG Size,
PVOID Data,
PULONG RequiredSize,
PDEVPROPTYPE Type);
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
#define IoCallDriverStackSafeDefault(a, b) IoCallDriver(a, b)
#if (NTDDI_VERSION >= NTDDI_WS08)
NTKERNELAPI
NTSTATUS
NTAPI
IoReplacePartitionUnit(
IN PDEVICE_OBJECT TargetPdo,
IN PDEVICE_OBJECT SparePdo,
IN ULONG Flags);
#endif
#if (NTDDI_VERSION >= NTDDI_WIN7)
NTKERNELAPI
@ -1533,7 +1577,20 @@ NTAPI
IoUnregisterContainerNotification(
IN PVOID CallbackRegistration);
#endif
NTKERNELAPI
NTSTATUS
NTAPI
IoUnregisterPlugPlayNotificationEx(
IN PVOID NotificationEntry);
NTKERNELAPI
NTSTATUS
NTAPI
IoGetDeviceNumaNode(
IN PDEVICE_OBJECT Pdo,
OUT PUSHORT NodeNumber);
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
#if defined(_WIN64)
NTKERNELAPI

File diff suppressed because it is too large Load diff

View file

@ -345,21 +345,6 @@ typedef BOOLEAN
IN BOOLEAN Handled);
typedef NMI_CALLBACK *PNMI_CALLBACK;
typedef enum _TRACE_INFORMATION_CLASS {
TraceIdClass,
TraceHandleClass,
TraceEnableFlagsClass,
TraceEnableLevelClass,
GlobalLoggerHandleClass,
EventLoggerHandleClass,
AllLoggerHandlesClass,
TraceHandleByNameClass,
LoggerEventsLostClass,
TraceSessionSettingsClass,
LoggerEventsLoggedClass,
MaxTraceInformationClass
} TRACE_INFORMATION_CLASS;
typedef enum _KE_PROCESSOR_CHANGE_NOTIFY_STATE {
KeProcessorAddStartNotify = 0,
KeProcessorAddCompleteNotify,

View file

@ -56,5 +56,86 @@ ObReleaseObjectSecurity(
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
#if (NTDDI_VERSION >= NTDDI_VISTA)
NTKERNELAPI
VOID
NTAPI
ObDereferenceObjectDeferDelete(
IN PVOID Object);
#endif
#if (NTDDI_VERSION >= NTDDI_VISTASP1)
NTKERNELAPI
NTSTATUS
NTAPI
ObRegisterCallbacks(
IN POB_CALLBACK_REGISTRATION CallbackRegistration,
OUT PVOID *RegistrationHandle);
NTKERNELAPI
VOID
NTAPI
ObUnRegisterCallbacks(
IN PVOID RegistrationHandle);
NTKERNELAPI
USHORT
NTAPI
ObGetFilterVersion(VOID);
#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */
#if (NTDDI_VERSION >= NTDDI_WIN7)
NTKERNELAPI
NTSTATUS
NTAPI
ObReferenceObjectByHandleWithTag(
IN HANDLE Handle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_TYPE ObjectType OPTIONAL,
IN KPROCESSOR_MODE AccessMode,
IN ULONG Tag,
OUT PVOID *Object,
OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL);
NTKERNELAPI
LONG_PTR
FASTCALL
ObfReferenceObjectWithTag(
IN PVOID Object,
IN ULONG Tag);
NTKERNELAPI
NTSTATUS
NTAPI
ObReferenceObjectByPointerWithTag(
IN PVOID Object,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_TYPE ObjectType OPTIONAL,
IN KPROCESSOR_MODE AccessMode,
IN ULONG Tag);
NTKERNELAPI
LONG_PTR
FASTCALL
ObfDereferenceObjectWithTag(
IN PVOID Object,
IN ULONG Tag);
NTKERNELAPI
VOID
NTAPI
ObDereferenceObjectDeferDeleteWithTag(
IN PVOID Object,
IN ULONG Tag);
#define ObDereferenceObject ObfDereferenceObject
#define ObReferenceObject ObfReferenceObject
#define ObDereferenceObjectWithTag ObfDereferenceObjectWithTag
#define ObReferenceObjectWithTag ObfReferenceObjectWithTag
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
$endif

View file

@ -2,11 +2,110 @@
* Object Manager Types *
******************************************************************************/
#define OB_FLT_REGISTRATION_VERSION_0100 0x0100
#define OB_FLT_REGISTRATION_VERSION OB_FLT_REGISTRATION_VERSION_0100
typedef ULONG OB_OPERATION;
#define OB_OPERATION_HANDLE_CREATE 0x00000001
#define OB_OPERATION_HANDLE_DUPLICATE 0x00000002
typedef struct _OB_PRE_CREATE_HANDLE_INFORMATION {
IN OUT ACCESS_MASK DesiredAccess;
IN ACCESS_MASK OriginalDesiredAccess;
} OB_PRE_CREATE_HANDLE_INFORMATION, *POB_PRE_CREATE_HANDLE_INFORMATION;
typedef struct _OB_PRE_DUPLICATE_HANDLE_INFORMATION {
IN OUT ACCESS_MASK DesiredAccess;
IN ACCESS_MASK OriginalDesiredAccess;
IN PVOID SourceProcess;
IN PVOID TargetProcess;
} OB_PRE_DUPLICATE_HANDLE_INFORMATION, *POB_PRE_DUPLICATE_HANDLE_INFORMATION;
typedef union _OB_PRE_OPERATION_PARAMETERS {
IN OUT OB_PRE_CREATE_HANDLE_INFORMATION CreateHandleInformation;
IN OUT OB_PRE_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation;
} OB_PRE_OPERATION_PARAMETERS, *POB_PRE_OPERATION_PARAMETERS;
typedef struct _OB_PRE_OPERATION_INFORMATION {
IN OB_OPERATION Operation;
union {
IN ULONG Flags;
struct {
IN ULONG KernelHandle:1;
IN ULONG Reserved:31;
};
};
IN PVOID Object;
IN POBJECT_TYPE ObjectType;
OUT PVOID CallContext;
IN POB_PRE_OPERATION_PARAMETERS Parameters;
} OB_PRE_OPERATION_INFORMATION, *POB_PRE_OPERATION_INFORMATION;
typedef struct _OB_POST_CREATE_HANDLE_INFORMATION {
IN ACCESS_MASK GrantedAccess;
} OB_POST_CREATE_HANDLE_INFORMATION, *POB_POST_CREATE_HANDLE_INFORMATION;
typedef struct _OB_POST_DUPLICATE_HANDLE_INFORMATION {
IN ACCESS_MASK GrantedAccess;
} OB_POST_DUPLICATE_HANDLE_INFORMATION, *POB_POST_DUPLICATE_HANDLE_INFORMATION;
typedef union _OB_POST_OPERATION_PARAMETERS {
IN OB_POST_CREATE_HANDLE_INFORMATION CreateHandleInformation;
IN OB_POST_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation;
} OB_POST_OPERATION_PARAMETERS, *POB_POST_OPERATION_PARAMETERS;
typedef struct _OB_POST_OPERATION_INFORMATION {
IN OB_OPERATION Operation;
union {
IN ULONG Flags;
struct {
IN ULONG KernelHandle:1;
IN ULONG Reserved:31;
};
};
IN PVOID Object;
IN POBJECT_TYPE ObjectType;
IN PVOID CallContext;
IN NTSTATUS ReturnStatus;
IN POB_POST_OPERATION_PARAMETERS Parameters;
} OB_POST_OPERATION_INFORMATION,*POB_POST_OPERATION_INFORMATION;
typedef enum _OB_PREOP_CALLBACK_STATUS {
OB_PREOP_SUCCESS
} OB_PREOP_CALLBACK_STATUS, *POB_PREOP_CALLBACK_STATUS;
typedef OB_PREOP_CALLBACK_STATUS
(NTAPI *POB_PRE_OPERATION_CALLBACK)(
IN PVOID RegistrationContext,
IN OUT POB_PRE_OPERATION_INFORMATION OperationInformation);
typedef VOID
(NTAPI *POB_POST_OPERATION_CALLBACK)(
IN PVOID RegistrationContext,
IN POB_POST_OPERATION_INFORMATION OperationInformation);
typedef struct _OB_OPERATION_REGISTRATION {
IN POBJECT_TYPE *ObjectType;
IN OB_OPERATION Operations;
IN POB_PRE_OPERATION_CALLBACK PreOperation;
IN POB_POST_OPERATION_CALLBACK PostOperation;
} OB_OPERATION_REGISTRATION, *POB_OPERATION_REGISTRATION;
typedef struct _OB_CALLBACK_REGISTRATION {
IN USHORT Version;
IN USHORT OperationRegistrationCount;
IN UNICODE_STRING Altitude;
IN PVOID RegistrationContext;
IN OB_OPERATION_REGISTRATION *OperationRegistration;
} OB_CALLBACK_REGISTRATION, *POB_CALLBACK_REGISTRATION;
typedef struct _OBJECT_NAME_INFORMATION {
UNICODE_STRING Name;
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
/* Exported object types */
extern POBJECT_TYPE NTSYSAPI CmKeyObjectType;
extern POBJECT_TYPE NTSYSAPI ExEventObjectType;
extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType;
extern POBJECT_TYPE NTSYSAPI IoFileObjectType;

View file

@ -5,6 +5,13 @@
#ifndef _PO_DDK_
#define _PO_DDK_
#define PO_CB_SYSTEM_POWER_POLICY 0
#define PO_CB_AC_STATUS 1
#define PO_CB_BUTTON_COLLISION 2
#define PO_CB_SYSTEM_STATE_LOCK 3
#define PO_CB_LID_SWITCH_STATE 4
#define PO_CB_PROCESSOR_POWER_POLICY 5
/* Power States/Levels */
typedef enum _SYSTEM_POWER_STATE {
PowerSystemUnspecified = 0,
@ -385,19 +392,21 @@ DEFINE_GUID(GUID_ENABLE_SWITCH_FORCED_SHUTDOWN, 0x833a6b62, 0xdfa4, 0x46d1, 0x82
#define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1
typedef VOID
(NTAPI *PREQUEST_POWER_COMPLETE)(
(NTAPI REQUEST_POWER_COMPLETE)(
IN struct _DEVICE_OBJECT *DeviceObject,
IN UCHAR MinorFunction,
IN POWER_STATE PowerState,
IN PVOID Context,
IN struct _IO_STATUS_BLOCK *IoStatus);
typedef REQUEST_POWER_COMPLETE *PREQUEST_POWER_COMPLETE;
typedef
NTSTATUS
(NTAPI *PPOWER_SETTING_CALLBACK)(
(NTAPI POWER_SETTING_CALLBACK)(
IN LPCGUID SettingGuid,
IN PVOID Value,
IN ULONG ValueLength,
IN OUT PVOID Context OPTIONAL);
typedef POWER_SETTING_CALLBACK *PPOWER_SETTING_CALLBACK;

View file

@ -44,6 +44,12 @@
#include <guiddef.h>
#endif
#ifndef _KTMTYPES_
typedef GUID UOW, *PUOW;
#endif
typedef GUID *PGUID;
#if (NTDDI_VERSION >= NTDDI_WINXP)
#include <dpfilter.h>
#endif
@ -154,6 +160,7 @@ $include (cmtypes.h)
$include (iotypes.h)
$include (obtypes.h)
$include (pstypes.h)
$include (wmitypes.h)
#if defined(_M_IX86)
$include(x86/ke.h)
@ -268,7 +275,6 @@ extern PBOOLEAN Mm64BitPhysicalAddress;
extern PVOID MmBadPointer;
#ifdef __cplusplus
}
#endif

View file

@ -3,7 +3,6 @@
******************************************************************************/
#ifdef RUN_WPP
#if (NTDDI_VERSION >= NTDDI_WINXP)
NTKERNELAPI
NTSTATUS
@ -15,8 +14,7 @@ WmiTraceMessage(
IN USHORT MessageNumber,
IN ...);
#endif
#endif
#endif /* RUN_WPP */
#if (NTDDI_VERSION >= NTDDI_WINXP)
@ -43,5 +41,112 @@ WmiTraceMessageVa(
IN va_list MessageArgList);
#endif
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
#ifndef TRACE_INFORMATION_CLASS_DEFINE
#if (NTDDI_VERSION >= NTDDI_WINXP)
NTKERNELAPI
NTSTATUS
NTAPI
WmiQueryTraceInformation(
IN TRACE_INFORMATION_CLASS TraceInformationClass,
OUT PVOID TraceInformation,
IN ULONG TraceInformationLength,
OUT PULONG RequiredLength OPTIONAL,
IN PVOID Buffer OPTIONAL);
#endif
#define TRACE_INFORMATION_CLASS_DEFINE
#endif /* TRACE_INFOPRMATION_CLASS_DEFINE */
#if (NTDDI_VERSION >= NTDDI_VISTA)
NTSTATUS
NTKERNELAPI
NTAPI
EtwRegister(
IN LPCGUID ProviderId,
IN PETWENABLECALLBACK EnableCallback OPTIONAL,
IN PVOID CallbackContext OPTIONAL,
OUT PREGHANDLE RegHandle);
NTSTATUS
NTKERNELAPI
NTAPI
EtwUnregister(
IN REGHANDLE RegHandle);
BOOLEAN
NTKERNELAPI
NTAPI
EtwEventEnabled(
IN REGHANDLE RegHandle,
IN PCEVENT_DESCRIPTOR EventDescriptor);
BOOLEAN
NTKERNELAPI
NTAPI
EtwProviderEnabled(
IN REGHANDLE RegHandle,
IN UCHAR Level,
IN ULONGLONG Keyword);
NTSTATUS
NTKERNELAPI
NTAPI
EtwActivityIdControl(
IN ULONG ControlCode,
IN OUT LPGUID ActivityId);
NTSTATUS
NTKERNELAPI
NTAPI
EtwWrite(
IN REGHANDLE RegHandle,
IN PCEVENT_DESCRIPTOR EventDescriptor,
IN LPCGUID ActivityId OPTIONAL,
IN ULONG UserDataCount,
IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL);
NTSTATUS
NTKERNELAPI
NTAPI
EtwWriteTransfer(
IN REGHANDLE RegHandle,
IN PCEVENT_DESCRIPTOR EventDescriptor,
IN LPCGUID ActivityId OPTIONAL,
IN LPCGUID RelatedActivityId OPTIONAL,
IN ULONG UserDataCount,
IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL);
NTSTATUS
NTKERNELAPI
NTAPI
EtwWriteString(
IN REGHANDLE RegHandle,
IN UCHAR Level,
IN ULONGLONG Keyword,
IN LPCGUID ActivityId OPTIONAL,
IN PCWSTR String);
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
#if (NTDDI_VERSION >= NTDDI_WIN7)
NTSTATUS
NTKERNELAPI
NTAPI
EtwWriteEx(
IN REGHANDLE RegHandle,
IN PCEVENT_DESCRIPTOR EventDescriptor,
IN ULONG64 Filter,
IN ULONG Flags,
IN LPCGUID ActivityId OPTIONAL,
IN LPCGUID RelatedActivityId OPTIONAL,
IN ULONG UserDataCount,
IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL);
#endif

57
include/xdk/wmitypes.h Normal file
View file

@ -0,0 +1,57 @@
/******************************************************************************
* WMI Library Support Types *
******************************************************************************/
#ifdef RUN_WPP
#include <evntrace.h>
#include <stdarg.h>
#endif
#ifndef TRACE_INFORMATION_CLASS_DEFINE
typedef struct _ETW_TRACE_SESSION_SETTINGS {
ULONG Version;
ULONG BufferSize;
ULONG MinimumBuffers;
ULONG MaximumBuffers;
ULONG LoggerMode;
ULONG FlushTimer;
ULONG FlushThreshold;
ULONG ClockType;
} ETW_TRACE_SESSION_SETTINGS, *PETW_TRACE_SESSION_SETTINGS;
typedef enum _TRACE_INFORMATION_CLASS {
TraceIdClass,
TraceHandleClass,
TraceEnableFlagsClass,
TraceEnableLevelClass,
GlobalLoggerHandleClass,
EventLoggerHandleClass,
AllLoggerHandlesClass,
TraceHandleByNameClass,
LoggerEventsLostClass,
TraceSessionSettingsClass,
LoggerEventsLoggedClass,
MaxTraceInformationClass
} TRACE_INFORMATION_CLASS;
#endif /* TRACE_INFORMATION_CLASS_DEFINE */
#ifndef _ETW_KM_
#define _ETW_KM_
#endif
#include <evntprov.h>
typedef VOID
(NTAPI *PETWENABLECALLBACK)(
IN LPCGUID SourceId,
IN ULONG ControlCode,
IN UCHAR Level,
IN ULONGLONG MatchAnyKeyword,
IN ULONGLONG MatchAllKeyword,
IN PEVENT_FILTER_DESCRIPTOR FilterData OPTIONAL,
IN OUT PVOID CallbackContext OPTIONAL);
#define EVENT_WRITE_FLAG_NO_FAULTING 0x00000001