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

📄 demodriver.h

📁 撰写windows驱动须知(Essentials Of Building Windows Drivers)
💻 H
字号:
//**************************************************************************************************//
//*                                                                                                *//
//* Copyright (C) 2003, James Antognini, antognini@mindspring.com.                                 *//
//*                                                                                                *//
//**************************************************************************************************//

#define JADrvNm   "DemoDriver"
#define JADrvNmW L"DemoDriver"
 
#ifdef JADriverKernelMode
  
#ifdef __cplusplus  // C++ conversion
extern "C"
{
#endif

// Print macro that turns on only when debugging is on.

#if DBG
#define DbgPrint(arg) DbgPrint arg
#else
#define DbgPrint(arg)
#endif

#ifdef __cplusplus  // C++ conversion
}
#endif

//***************************************************************************//
//                                                                           //
// Prototypes.                                                               //
//                                                                           //
//***************************************************************************//

#ifdef __cplusplus  // C++ conversion
extern "C"
{
#endif

NTSTATUS
DemoDrvDispatch2(
                 IN PDEVICE_OBJECT,
                 IN PIRP         
                );

NTSTATUS
DemoDrvDispatchAny(
                   IN PDEVICE_OBJECT,
                   IN PIRP
                  );

VOID
DemoDrvUnload(IN PDRIVER_OBJECT);

int
DemoDrvTechnique(
                 IN PDEVICE_OBJECT,
                 IN PIRP,
                 IN PVOID,
                 IN ULONG,
                 IN PVOID,
                 IN ULONG
                );

#ifdef __cplusplus  // C++ conversion
}
#endif

//***************************************************************************//
//                                                                           //
// Globals.                                                                  //
//                                                                           //
//***************************************************************************//

#ifdef _DemoDriverPart1                               // Expand only if first piece of driver.
PDRIVER_OBJECT   pMstrJADrvObj = NULL;

PDEVICE_OBJECT   pJAMstrDevObj = NULL;                // "Master" device object, created in DriverEntry.
#endif

typedef struct                                        // Device extension.
  {
   ULONG           ulOpen;                            // OPENs against device.
   PDEVICE_OBJECT  pMstrDevObj;
   PDEVICE_OBJECT  pPhysDevObj;
   UNICODE_STRING  JAUniSymLinkName;
   UNICODE_STRING  JAUniDeviceName;
   UNICODE_STRING  JARegPath;
   ANSI_STRING     DriverName;
  } DemoDrvExtension,
    * pDemoDrvExtension;

extern pDemoDrvExtension pMstrDevExt;
  
#endif                                                // end if defined JADriverKernelMode.
  
#define FILE_DEVICE_DemoDrv      0x00008500
 
#define DemoDrv_TEST  (ULONG) CTL_CODE(FILE_DEVICE_DemoDrv,    \
                                         0x01,                 \
                                         METHOD_BUFFERED,      \
                                         FILE_ANY_ACCESS       \
                                        )                          
                                                                 
#define DemoDrv_TEST2 (ULONG) CTL_CODE(FILE_DEVICE_DemoDrv,    \
                                         0x02,                 \
                                         METHOD_BUFFERED,      \
                                         FILE_ANY_ACCESS       \
                                        )                          
                                                                 
typedef struct _DemoDrvTestStr
  {
   ULONG     x1;
   ULONG     x2;
   ULONG     x3;
  }
   DemoDrvTestStr,
   *pDemoDrvTestStr;
  

⌨️ 快捷键说明

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