📄 winddk.h
字号:
#define IRP_MN_QUERY_BUS_INFORMATION 0x15
#define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16
#define IRP_MN_SURPRISE_REMOVAL 0x17
#define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18
#define IRP_MN_WAIT_WAKE 0x00
#define IRP_MN_POWER_SEQUENCE 0x01
#define IRP_MN_SET_POWER 0x02
#define IRP_MN_QUERY_POWER 0x03
#define IRP_MN_QUERY_ALL_DATA 0x00
#define IRP_MN_QUERY_SINGLE_INSTANCE 0x01
#define IRP_MN_CHANGE_SINGLE_INSTANCE 0x02
#define IRP_MN_CHANGE_SINGLE_ITEM 0x03
#define IRP_MN_ENABLE_EVENTS 0x04
#define IRP_MN_DISABLE_EVENTS 0x05
#define IRP_MN_ENABLE_COLLECTION 0x06
#define IRP_MN_DISABLE_COLLECTION 0x07
#define IRP_MN_REGINFO 0x08
#define IRP_MN_EXECUTE_METHOD 0x09
#define IRP_MN_REGINFO_EX 0x0b
typedef enum _IO_ALLOCATION_ACTION {
KeepObject = 1,
DeallocateObject,
DeallocateObjectKeepRegisters
} IO_ALLOCATION_ACTION, *PIO_ALLOCATION_ACTION;
typedef IO_ALLOCATION_ACTION
(DDKAPI *PDRIVER_CONTROL)(
/*IN*/ struct _DEVICE_OBJECT *DeviceObject,
/*IN*/ struct _IRP *Irp,
/*IN*/ PVOID MapRegisterBase,
/*IN*/ PVOID Context);
typedef VOID
(DDKAPI *PDRIVER_LIST_CONTROL)(
/*IN*/ struct _DEVICE_OBJECT *DeviceObject,
/*IN*/ struct _IRP *Irp,
/*IN*/ struct _SCATTER_GATHER_LIST *ScatterGather,
/*IN*/ PVOID Context);
typedef NTSTATUS
(DDKAPI *PDRIVER_ADD_DEVICE)(
/*IN*/ struct _DRIVER_OBJECT *DriverObject,
/*IN*/ struct _DEVICE_OBJECT *PhysicalDeviceObject);
typedef NTSTATUS
(DDKAPI *PIO_COMPLETION_ROUTINE)(
/*IN*/ struct _DEVICE_OBJECT *DeviceObject,
/*IN*/ struct _IRP *Irp,
/*IN*/ PVOID Context);
typedef VOID
(DDKAPI *PDRIVER_CANCEL)(
/*IN*/ struct _DEVICE_OBJECT *DeviceObject,
/*IN*/ struct _IRP *Irp);
typedef VOID
(DDKAPI *PKDEFERRED_ROUTINE)(
/*IN*/ struct _KDPC *Dpc,
/*IN*/ PVOID DeferredContext,
/*IN*/ PVOID SystemArgument1,
/*IN*/ PVOID SystemArgument2);
typedef NTSTATUS
(DDKAPI *PDRIVER_DISPATCH)(
/*IN*/ struct _DEVICE_OBJECT *DeviceObject,
/*IN*/ struct _IRP *Irp);
typedef VOID
(DDKAPI *PIO_DPC_ROUTINE)(
/*IN*/ struct _KDPC *Dpc,
/*IN*/ struct _DEVICE_OBJECT *DeviceObject,
/*IN*/ struct _IRP *Irp,
/*IN*/ PVOID Context);
typedef NTSTATUS
(DDKAPI *PMM_DLL_INITIALIZE)(
/*IN*/ PUNICODE_STRING RegistryPath);
typedef NTSTATUS
(DDKAPI *PMM_DLL_UNLOAD)(
VOID);
typedef NTSTATUS
(DDKAPI *PDRIVER_ENTRY)(
/*IN*/ struct _DRIVER_OBJECT *DriverObject,
/*IN*/ PUNICODE_STRING RegistryPath);
typedef NTSTATUS
(DDKAPI *PDRIVER_INITIALIZE)(
/*IN*/ struct _DRIVER_OBJECT *DriverObject,
/*IN*/ PUNICODE_STRING RegistryPath);
typedef BOOLEAN
(DDKAPI *PKSERVICE_ROUTINE)(
/*IN*/ struct _KINTERRUPT *Interrupt,
/*IN*/ PVOID ServiceContext);
typedef VOID
(DDKAPI *PIO_TIMER_ROUTINE)(
/*IN*/ struct _DEVICE_OBJECT *DeviceObject,
/*IN*/ PVOID Context);
typedef VOID
(DDKAPI *PDRIVER_REINITIALIZE)(
/*IN*/ struct _DRIVER_OBJECT *DriverObject,
/*IN*/ PVOID Context,
/*IN*/ ULONG Count);
typedef NTSTATUS
(DDKAPI *PDRIVER_STARTIO)(
/*IN*/ struct _DEVICE_OBJECT *DeviceObject,
/*IN*/ struct _IRP *Irp);
typedef BOOLEAN
(DDKAPI *PKSYNCHRONIZE_ROUTINE)(
/*IN*/ PVOID SynchronizeContext);
typedef VOID
(DDKAPI *PDRIVER_UNLOAD)(
/*IN*/ struct _DRIVER_OBJECT *DriverObject);
/*
** Plug and Play structures
*/
typedef VOID DDKAPI
(*PINTERFACE_REFERENCE)(
PVOID Context);
typedef VOID DDKAPI
(*PINTERFACE_DEREFERENCE)(
PVOID Context);
typedef BOOLEAN DDKAPI
(*PTRANSLATE_BUS_ADDRESS)(
/*IN*/ PVOID Context,
/*IN*/ PHYSICAL_ADDRESS BusAddress,
/*IN*/ ULONG Length,
/*IN OUT*/ PULONG AddressSpace,
/*OUT*/ PPHYSICAL_ADDRESS TranslatedAddress);
typedef struct _DMA_ADAPTER* DDKAPI
(*PGET_DMA_ADAPTER)(
/*IN*/ PVOID Context,
/*IN*/ struct _DEVICE_DESCRIPTION *DeviceDescriptor,
/*OUT*/ PULONG NumberOfMapRegisters);
typedef ULONG DDKAPI
(*PGET_SET_DEVICE_DATA)(
/*IN*/ PVOID Context,
/*IN*/ ULONG DataType,
/*IN*/ PVOID Buffer,
/*IN*/ ULONG Offset,
/*IN*/ ULONG Length);
typedef union _POWER_STATE {
SYSTEM_POWER_STATE SystemState;
DEVICE_POWER_STATE DeviceState;
} POWER_STATE, *PPOWER_STATE;
typedef enum _POWER_STATE_TYPE {
SystemPowerState,
DevicePowerState
} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
typedef struct _BUS_INTERFACE_STANDARD {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
PTRANSLATE_BUS_ADDRESS TranslateBusAddress;
PGET_DMA_ADAPTER GetDmaAdapter;
PGET_SET_DEVICE_DATA SetBusData;
PGET_SET_DEVICE_DATA GetBusData;
} BUS_INTERFACE_STANDARD, *PBUS_INTERFACE_STANDARD;
typedef struct _DEVICE_CAPABILITIES {
USHORT Size;
USHORT Version;
ULONG DeviceD1 : 1;
ULONG DeviceD2 : 1;
ULONG LockSupported : 1;
ULONG EjectSupported : 1;
ULONG Removable : 1;
ULONG DockDevice : 1;
ULONG UniqueID : 1;
ULONG SilentInstall : 1;
ULONG RawDeviceOK : 1;
ULONG SurpriseRemovalOK : 1;
ULONG WakeFromD0 : 1;
ULONG WakeFromD1 : 1;
ULONG WakeFromD2 : 1;
ULONG WakeFromD3 : 1;
ULONG HardwareDisabled : 1;
ULONG NonDynamic : 1;
ULONG WarmEjectSupported : 1;
ULONG NoDisplayInUI : 1;
ULONG Reserved : 14;
ULONG Address;
ULONG UINumber;
DEVICE_POWER_STATE DeviceState[PowerSystemMaximum];
SYSTEM_POWER_STATE SystemWake;
DEVICE_POWER_STATE DeviceWake;
ULONG D1Latency;
ULONG D2Latency;
ULONG D3Latency;
} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
typedef struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION {
USHORT Version;
USHORT Size;
GUID Event;
GUID InterfaceClassGuid;
PUNICODE_STRING SymbolicLinkName;
} DEVICE_INTERFACE_CHANGE_NOTIFICATION, *PDEVICE_INTERFACE_CHANGE_NOTIFICATION;
typedef struct _HWPROFILE_CHANGE_NOTIFICATION {
USHORT Version;
USHORT Size;
GUID Event;
} HWPROFILE_CHANGE_NOTIFICATION, *PHWPROFILE_CHANGE_NOTIFICATION;
#undef INTERFACE
typedef struct _INTERFACE {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
} INTERFACE, *PINTERFACE;
typedef struct _PLUGPLAY_NOTIFICATION_HEADER {
USHORT Version;
USHORT Size;
GUID Event;
} PLUGPLAY_NOTIFICATION_HEADER, *PPLUGPLAY_NOTIFICATION_HEADER;
typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE;
/* PNP_DEVICE_STATE */
#define PNP_DEVICE_DISABLED 0x00000001
#define PNP_DEVICE_DONT_DISPLAY_IN_UI 0x00000002
#define PNP_DEVICE_FAILED 0x00000004
#define PNP_DEVICE_REMOVED 0x00000008
#define PNP_DEVICE_RESOURCE_REQUIREMENTS_CHANGED 0x00000010
#define PNP_DEVICE_NOT_DISABLEABLE 0x00000020
typedef struct _TARGET_DEVICE_CUSTOM_NOTIFICATION {
USHORT Version;
USHORT Size;
GUID Event;
struct _FILE_OBJECT *FileObject;
LONG NameBufferOffset;
UCHAR CustomDataBuffer[1];
} TARGET_DEVICE_CUSTOM_NOTIFICATION, *PTARGET_DEVICE_CUSTOM_NOTIFICATION;
typedef struct _TARGET_DEVICE_REMOVAL_NOTIFICATION {
USHORT Version;
USHORT Size;
GUID Event;
struct _FILE_OBJECT *FileObject;
} TARGET_DEVICE_REMOVAL_NOTIFICATION, *PTARGET_DEVICE_REMOVAL_NOTIFICATION;
typedef enum _BUS_QUERY_ID_TYPE {
BusQueryDeviceID,
BusQueryHardwareIDs,
BusQueryCompatibleIDs,
BusQueryInstanceID,
BusQueryDeviceSerialNumber
} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
typedef enum _DEVICE_TEXT_TYPE {
DeviceTextDescription,
DeviceTextLocationInformation
} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
DeviceUsageTypeUndefined,
DeviceUsageTypePaging,
DeviceUsageTypeHibernation,
DeviceUsageTypeDumpFile
} DEVICE_USAGE_NOTIFICATION_TYPE;
typedef struct _POWER_SEQUENCE {
ULONG SequenceD1;
ULONG SequenceD2;
ULONG SequenceD3;
} POWER_SEQUENCE, *PPOWER_SEQUENCE;
typedef enum {
DevicePropertyDeviceDescription,
DevicePropertyHardwareID,
DevicePropertyCompatibleIDs,
DevicePropertyBootConfiguration,
DevicePropertyBootConfigurationTranslated,
DevicePropertyClassName,
DevicePropertyClassGuid,
DevicePropertyDriverKeyName,
DevicePropertyManufacturer,
DevicePropertyFriendlyName,
DevicePropertyLocationInformation,
DevicePropertyPhysicalDeviceObjectName,
DevicePropertyBusTypeGuid,
DevicePropertyLegacyBusType,
DevicePropertyBusNumber,
DevicePropertyEnumeratorName,
DevicePropertyAddress,
DevicePropertyUINumber,
DevicePropertyInstallState,
DevicePropertyRemovalPolicy
} DEVICE_REGISTRY_PROPERTY;
typedef enum _IO_NOTIFICATION_EVENT_CATEGORY {
EventCategoryReserved,
EventCategoryHardwareProfileChange,
EventCategoryDeviceInterfaceChange,
EventCategoryTargetDeviceChange
} IO_NOTIFICATION_EVENT_CATEGORY;
#define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES 0x00000001
typedef NTSTATUS DDKAPI
(*PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)(
/*IN*/ PVOID NotificationStructure,
/*IN*/ PVOID Context);
typedef VOID DDKAPI
(*PDEVICE_CHANGE_COMPLETE_CALLBACK)(
/*IN*/ PVOID Context);
/*
** System structures
*/
#define SYMBOLIC_LINK_QUERY 0x0001
#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
/* also in winnt,h */
#define DUPLICATE_CLOSE_SOURCE 0x00000001
#define DUPLICATE_SAME_ACCESS 0x00000002
#define DUPLICATE_SAME_ATTRIBUTES 0x00000004
/* end winnt.h */
typedef struct _OBJECT_NAME_INFORMATION {
UNICODE_STRING Name;
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
typedef VOID DDKAPI
(*PIO_APC_ROUTINE)(
/*IN*/ PVOID ApcContext,
/*IN*/ PIO_STATUS_BLOCK IoStatusBlock,
/*IN*/ ULONG Reserved);
typedef struct _IO_STATUS_BLOCK {
_ANONYMOUS_UNION union {
NTSTATUS Status;
PVOID Pointer;
} DUMMYUNIONNAME;
ULONG_PTR Information;
} IO_STATUS_BLOCK;
typedef VOID DDKAPI
(*PKNORMAL_ROUTINE)(
/*IN*/ PVOID NormalContext,
/*IN*/ PVOID SystemArgument1,
/*IN*/ PVOID SystemArgument2);
typedef VOID DDKAPI
(*PKKERNEL_ROUTINE)(
/*IN*/ struct _KAPC *Apc,
/*IN OUT*/ PKNORMAL_ROUTINE *NormalRoutine,
/*IN OUT*/ PVOID *NormalContext,
/*IN OUT*/ PVOID *SystemArgument1,
/*IN OUT*/ PVOID *SystemArgument2);
typedef VOID DDKAPI
(*PKRUNDOWN_ROUTINE)(
/*IN*/ struct _KAPC *Apc);
typedef BOOLEAN DDKAPI
(*PKTRANSFER_ROUTINE)(
VOID);
typedef struct _KAPC {
CSHORT Type;
CSHORT Size;
ULONG Spare0;
struct _KTHREAD *Thread;
LIST_ENTRY ApcListEntry;
PKKERNEL_ROUTINE KernelRoutine;
PKRUNDOWN_ROUTINE RundownRoutine;
PKNORMAL_ROUTINE NormalRoutine;
PVOID NormalContext;
PVOID SystemArgument1;
PVOID SystemArgument2;
CCHAR ApcStateIndex;
KPROCESSOR_MODE ApcMode;
BOOLEAN Inserted;
} KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC;
typedef struct _KDEVICE_QUEUE {
CSHORT Type;
CSHORT Size;
LIST_ENTRY DeviceListHead;
KSPIN_LOCK Lock;
BOOLEAN Busy;
} KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
typedef struct _KDEVICE_QUEUE_ENTRY {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -