⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winddk.h

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 H
📖 第 1 页 / 共 5 页
字号:
#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 + -