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

📄 charsample.h

📁 windows 驱动程序开发相关资料与代码 让你深刻知晓windows 开发的魅力所在!
💻 H
📖 第 1 页 / 共 2 页
字号:
VOID CharSamplePendingIoCancelRoutine(
    IN  PDEVICE_OBJECT  DeviceObject,
    IN  PIRP            Irp
    );

NTSTATUS CharSampleIncrementIoCount(
    IN  PCHARSAMPLE_IO_LOCK    IoLock
    );

VOID CharSampleDecrementIoCount(
    IN  PCHARSAMPLE_IO_LOCK    IoLock
    );

VOID CharSampleLockIo(
    IN  PCHARSAMPLE_IO_LOCK    IoLock
    );

VOID CharSampleWaitForStopIo(
    IN  PCHARSAMPLE_IO_LOCK    IoLock
    );

VOID CharSampleUnlockIo(
    IN  PCHARSAMPLE_IO_LOCK    IoLock
    );

VOID CharSampleFlushPendingIo(
    IN  PCHARSAMPLE_IO_LOCK    IoLock,
    IN  PFILE_OBJECT                FileObject
    );

VOID CharSampleInvalidateIo(
    IN  PCHARSAMPLE_IO_LOCK    IoLock,
    IN  NTSTATUS                    ErrorStatus
    );
#ifdef __cplusplus
}
#endif

BOOLEAN CharSampleIsStoppable(
    IN  PCHARSAMPLE_DEVICE_EXTENSION    DeviceExtension
    );

BOOLEAN CharSampleIsRemovable(
    IN  PCHARSAMPLE_DEVICE_EXTENSION    DeviceExtension
    );

BOOLEAN CharSampleAcquireRemoveLock(
    IN  PCHARSAMPLE_DEVICE_EXTENSION    DeviceExtension
    );

VOID CharSampleReleaseRemoveLock(
    IN  PCHARSAMPLE_DEVICE_EXTENSION    DeviceExtension
    );

VOID CharSampleWaitForSafeRemove(
    IN  PCHARSAMPLE_DEVICE_EXTENSION    DeviceExtension
    );

NTSTATUS CharSampleSubmitIrpSync(
    IN  PDEVICE_OBJECT  DeviceObject,
    IN  PIRP            Irp
    );

VOID CharSampleStallQueues(
    IN  PCHARSAMPLE_DEVICE_EXTENSION DeviceExtension
    );

VOID CharSampleRestartQueues(
    IN  PCHARSAMPLE_DEVICE_EXTENSION DeviceExtension
    );

VOID CharSampleFlushQueues(
    IN  PCHARSAMPLE_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 CharSampleStartDevice(
    IN  PCHARSAMPLE_DEVICE_EXTENSION    DeviceExtension,
    IN  PIRP                            Irp
    );

NTSTATUS CharSampleFreeResources(
    IN  PCHARSAMPLE_DEVICE_EXTENSION DeviceExtension
    );

///////////////////////////////////////////////////////////////////////////////////////////////////
// Power
///////////////////////////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////////////////////////
// Registry
///////////////////////////////////////////////////////////////////////////////////////////////////

PVOID CharSampleRegQueryValueKey(
    IN  HANDLE  RegKeyHandle,
    IN  PWSTR   SubKeyName,
    IN  PWSTR   ValueName,
    OUT PULONG  Length
    );

VOID CharSampleRegEnumerateKeys(
    IN  HANDLE RegKeyHandle
    );

VOID CharSampleRegEnumerateValueKeys(
    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 CHARSAMPLE_WMI_TRACE

/*
tracepdb -f objchk_wxp_x86\i386\CharSample.pdb -p C:\CharSample
SET TRACE_FORMAT_SEARCH_PATH=C:\CharSample

tracelog -start CharSample -guid CharSample.ctl -f CharSample.log -flags 0x7FFFFFFF -level 5
tracelog -stop CharSample

tracefmt -o CharSample.txt -f CharSample.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(CharSample,(C5358348,1E92,434E,A320,7658733D2887), \
        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 CharSampleDumpIrp(
    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

VOID CharSampleDebugPrint(
    IN ULONG    Area,
    IN ULONG    Level,
    IN PCCHAR   Format,
    IN          ...
    );

VOID CharSampleDumpIrp(
    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
    );

#endif

#endif  // __CHARSAMPLE_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -