📄 driverb_syn.h
字号:
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension
);
BOOLEAN DriverB_SynAcquireRemoveLock(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension
);
VOID DriverB_SynReleaseRemoveLock(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension
);
VOID DriverB_SynWaitForSafeRemove(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension
);
NTSTATUS DriverB_SynSubmitIrpSync(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
VOID DriverB_SynStallQueues(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension
);
VOID DriverB_SynRestartQueues(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension
);
VOID DriverB_SynFlushQueues(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension,
IN PFILE_OBJECT FileObject
);
///////////////////////////////////////////////////////////////////////////////////////////////////
// Pnp
///////////////////////////////////////////////////////////////////////////////////////////////////
// define this PnP IRP. This IRP is only defined in ntddk.h normally
#if !defined(IRP_MN_QUERY_LEGACY_BUS_INFORMATION)
#define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18
#endif // IRP_MN_QUERY_LEGACY_BUS_INFORMATION
NTSTATUS DriverB_SynStartDevice(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension,
IN PIRP Irp
);
NTSTATUS DriverB_SynFreeResources(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension
);
NTSTATUS DriverB_SynGetDeviceCapabilities(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension
);
///////////////////////////////////////////////////////////////////////////////////////////////////
// Power
///////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _DRIVERB_SYN_POWER_IRP_CONTEXT
{
PKEVENT Event;
NTSTATUS Status;
} DRIVERB_SYN_POWER_IRP_CONTEXT, *PDRIVERB_SYN_POWER_IRP_CONTEXT;
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
NTSTATUS DriverB_SynSystemPowerDispatch(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension,
IN PIRP Irp
);
NTSTATUS DriverB_SynSystemPowerCompletionRoutine(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
NTSTATUS DriverB_SynDeviceQueryPowerCompletionRoutine(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
NTSTATUS DriverB_SynDeviceSetPowerCompletionRoutine(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
VOID DriverB_SynDevicePowerCompleteCallback(
IN PDEVICE_OBJECT DeviceObject,
IN UCHAR MinorFunction,
IN POWER_STATE PowerState,
IN PVOID Context,
IN PIO_STATUS_BLOCK IoStatus
);
#ifdef __cplusplus
}
#endif // __cplusplus
NTSTATUS DriverB_SynGetDevicePowerState(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension,
IN SYSTEM_POWER_STATE SystemState,
OUT PDEVICE_POWER_STATE DeviceState
);
VOID DriverB_SynPowerDownPreparation(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension,
IN PIO_WORKITEM_ROUTINE Callback
);
VOID DriverB_SynPowerDownPrepCallback(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context
);
VOID DriverB_SynPowerD0PrepCallback(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context
);
VOID DriverB_SynPowerUpCallback(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context
);
VOID DriverB_SynRequestDevicePowerIrpCallback(
IN PDEVICE_OBJECT DeviceObject,
IN UCHAR MinorFunction,
IN POWER_STATE PowerState,
IN PVOID Context,
IN PIO_STATUS_BLOCK IoStatus
);
NTSTATUS DriverB_SynRequestDevicePowerIrp(
IN PDRIVERB_SYN_DEVICE_EXTENSION DeviceExtension,
IN DEVICE_POWER_STATE DeviceState
);
///////////////////////////////////////////////////////////////////////////////////////////////////
// Registry
///////////////////////////////////////////////////////////////////////////////////////////////////
PVOID DriverB_SynRegQueryValueKey(
IN HANDLE RegKeyHandle,
IN PWSTR SubKeyName,
IN PWSTR ValueName,
OUT PULONG Length
);
VOID DriverB_SynRegEnumerateKeys(
IN HANDLE RegKeyHandle
);
VOID DriverB_SynRegEnumerateValueKeys(
IN HANDLE RegKeyHandle
);
///////////////////////////////////////////////////////////////////////////////////////////////////
// Debug
///////////////////////////////////////////////////////////////////////////////////////////////////
// definition of debug levels
#define DBG_NONE 0
#define DBG_ERR 1
#define DBG_WARN 2
#define DBG_TRACE 3
#define DBG_INFO 4
#define DBG_VERB 5
#ifdef DRIVERB_SYN_WMI_TRACE
/*
tracepdb -f objchk_wxp_x86\i386\DriverB_Syn.pdb -p C:\DriverB_Syn
SET TRACE_FORMAT_SEARCH_PATH=C:\DriverB_Syn
tracelog -start DriverB_Syn -guid DriverB_Syn.ctl -f DriverB_Syn.log -flags 0x7FFFFFFF -level 5
tracelog -stop DriverB_Syn
tracefmt -o DriverB_Syn.txt -f DriverB_Syn.log
*/
#define WPP_AREA_LEVEL_LOGGER(Area,Lvl) WPP_LEVEL_LOGGER(Area)
#define WPP_AREA_LEVEL_ENABLED(Area,Lvl) (WPP_LEVEL_ENABLED(Area) && WPP_CONTROL(WPP_BIT_##Area).Level >= Lvl)
#define WPP_CONTROL_GUIDS \
WPP_DEFINE_CONTROL_GUID(DriverB_Syn,(D52281C6,8C6D,4D9F,9FD2,13884E6F4783), \
WPP_DEFINE_BIT(DBG_GENERAL) /* bit 0 = 0x00000001 */ \
WPP_DEFINE_BIT(DBG_PNP) /* bit 1 = 0x00000002 */ \
WPP_DEFINE_BIT(DBG_POWER) /* bit 2 = 0x00000004 */ \
WPP_DEFINE_BIT(DBG_COUNT) /* bit 3 = 0x00000008 */ \
WPP_DEFINE_BIT(DBG_CREATECLOSE) /* bit 4 = 0x00000010 */ \
WPP_DEFINE_BIT(DBG_WMI) /* bit 5 = 0x00000020 */ \
WPP_DEFINE_BIT(DBG_UNLOAD) /* bit 6 = 0x00000040 */ \
WPP_DEFINE_BIT(DBG_IO) /* bit 7 = 0x00000080 */ \
WPP_DEFINE_BIT(DBG_INIT) /* bit 8 = 0x00000100 */ \
WPP_DEFINE_BIT(DBG_09) /* bit 9 = 0x00000200 */ \
WPP_DEFINE_BIT(DBG_10) /* bit 10 = 0x00000400 */ \
WPP_DEFINE_BIT(DBG_11) /* bit 11 = 0x00000800 */ \
WPP_DEFINE_BIT(DBG_12) /* bit 12 = 0x00001000 */ \
WPP_DEFINE_BIT(DBG_13) /* bit 13 = 0x00002000 */ \
WPP_DEFINE_BIT(DBG_14) /* bit 14 = 0x00004000 */ \
WPP_DEFINE_BIT(DBG_15) /* bit 15 = 0x00008000 */ \
WPP_DEFINE_BIT(DBG_16) /* bit 16 = 0x00010000 */ \
WPP_DEFINE_BIT(DBG_17) /* bit 17 = 0x00020000 */ \
WPP_DEFINE_BIT(DBG_18) /* bit 18 = 0x00040000 */ \
WPP_DEFINE_BIT(DBG_19) /* bit 19 = 0x00080000 */ \
WPP_DEFINE_BIT(DBG_20) /* bit 20 = 0x00100000 */ \
WPP_DEFINE_BIT(DBG_21) /* bit 21 = 0x00200000 */ \
WPP_DEFINE_BIT(DBG_22) /* bit 22 = 0x00400000 */ \
WPP_DEFINE_BIT(DBG_23) /* bit 23 = 0x00800000 */ \
WPP_DEFINE_BIT(DBG_24) /* bit 24 = 0x01000000 */ \
WPP_DEFINE_BIT(DBG_25) /* bit 25 = 0x02000000 */ \
WPP_DEFINE_BIT(DBG_26) /* bit 26 = 0x04000000 */ \
WPP_DEFINE_BIT(DBG_27) /* bit 27 = 0x08000000 */ \
WPP_DEFINE_BIT(DBG_28) /* bit 28 = 0x10000000 */ \
WPP_DEFINE_BIT(DBG_29) /* bit 29 = 0x20000000 */ \
WPP_DEFINE_BIT(DBG_30) /* bit 30 = 0x40000000 */ \
WPP_DEFINE_BIT(DBG_31) /* bit 31 = 0x80000000 */ \
)
__inline VOID DriverB_SynDumpIrp(
IN PIRP Irp
)
{
}
__inline PCHAR SystemPowerStateString(
IN SYSTEM_POWER_STATE SystemState
)
{
return "";
}
__inline PCHAR DevicePowerStateString(
IN DEVICE_POWER_STATE DeviceState
)
{
return "";
}
#else
// definition of debug areas
#define DBG_GENERAL (1 << 0)
#define DBG_PNP (1 << 1)
#define DBG_POWER (1 << 2)
#define DBG_COUNT (1 << 3)
#define DBG_CREATECLOSE (1 << 4)
#define DBG_WMI (1 << 5)
#define DBG_UNLOAD (1 << 6)
#define DBG_IO (1 << 7)
#define DBG_INIT (1 << 8)
#define DBG_ALL 0xFFFFFFFF
#if DBG
VOID DriverB_SynDebugPrint(
IN ULONG Area,
IN ULONG Level,
IN PCCHAR Format,
IN ...
);
VOID DriverB_SynDumpIrp(
IN PIRP Irp
);
PCHAR IrpMajorFunctionString(
IN UCHAR MajorFunction
);
PCHAR PnPMinorFunctionString(
IN UCHAR MinorFunction
);
PCHAR PowerMinorFunctionString(
IN UCHAR MinorFunction
);
PCHAR SystemPowerStateString(
IN SYSTEM_POWER_STATE SystemState
);
PCHAR DevicePowerStateString(
IN DEVICE_POWER_STATE DeviceState
);
PCHAR WMIMinorFunctionString (
IN UCHAR MinorFunction
);
#else // !DBG
__inline VOID DriverB_SynDebugPrint(
IN ULONG Area,
IN ULONG Level,
IN PCCHAR Format,
IN ...
)
{
}
#define DriverB_SynDumpIrp(Irp)
#define IrpMajorFunctionString(MajorFunction)
#define PnPMinorFunctionString(MinorFunction)
#define PowerMinorFunctionString(MinorFunction)
#define SystemPowerStateString(SystemState) 0
#define DevicePowerStateString(DeviceState) 0
#define WMIMinorFunctionString(MinorFunction)
#define DriverB_SynTdiDumpAddress(Address)
#endif // DBG
#endif // DRIVERB_SYN_WMI_TRACE
#endif // __DRIVERB_SYN_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -