📄 winddk.h
字号:
#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 0x0btypedef 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 INTERFACEtypedef 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 0x00000020typedef 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 0x00000001typedef 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 { LIST_ENTRY DeviceListEntry; ULONG SortKey; BOOLEAN Inserted;} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY,*RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY;#define LOCK_QUEUE_WAIT 1#define LOCK_QUEUE_OWNER 2typedef enum _KSPIN_LOCK_QUEUE_NUMBER { LockQueueDispatcherLock, LockQueueContextSwapLock, LockQueuePfnLock, LockQueueSystemSpaceLock, LockQueueVacbLock, LockQueueMasterLock, LockQueueNonPagedPoolLock, LockQueueIoCancelLock, LockQueueWorkQueueLock, LockQueueIoVpbLock, LockQueueIoDatabaseLock, LockQueueIoCompletionLock, LockQueueNtfsStructLock, LockQueueAfdWorkQueueLock, LockQueueBcbLock, LockQueueMaximumLock} KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER;typedef struct _KSPIN_LOCK_QUEUE { struct _KSPIN_LOCK_QUEUE *VOLATILE Next;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -