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

📄 hellowdm.h

📁 Windows 2000下一个WDM驱动的简单范例
💻 H
字号:
//
//Created by
//Tsinghua University E.E.	Tanzhangxi(xtan) 1999.9.7
//
#ifndef	HELLOWDM_H
#define HELLOWDM_H

#ifdef __cplusplus
extern "C" {
#endif

#include <wdm.h>

#ifdef __cplusplus
} // extern "C"
#endif

#define arraysize(p) (sizeof(p)/sizeof((p)[0]))

typedef struct tagDEVICE_EXTENSION {
    PDEVICE_OBJECT DeviceObject;            
    PDEVICE_OBJECT LowerDeviceObject;       
    UNICODE_STRING ifname;                  
    LONG usage;                             
    KEVENT evRemove;                        
    PULONG idle;                            
    BOOLEAN started;                        
    BOOLEAN enabled;                        
    BOOLEAN iospace;                        
    BOOLEAN mappedport;                     
    BOOLEAN removing;                       
    DEVICE_POWER_STATE power;               
    ULONG nports;                           
    PUCHAR base;                            
    PKINTERRUPT InterruptObject;            
    PUCHAR buffer;                          
    ULONG nbytes;                           
    ULONG numxfer;                          
    } DEVICE_EXTENSION, *PDEVICE_EXTENSION;

#define SIMPLE_IDLE_CONSERVATION    30
#define SIMPLE_IDLE_PERFORMANCE     600

NTSTATUS CompleteRequest(IN PIRP Irp, IN NTSTATUS status, IN ULONG info);
NTSTATUS ForwardAndWait(IN PDEVICE_OBJECT fdo, IN PIRP Irp);
BOOLEAN LockDevice(IN PDEVICE_EXTENSION pdx);
BOOLEAN LockDevice(IN PDEVICE_OBJECT fdo);
NTSTATUS OnRequestComplete(IN PDEVICE_OBJECT fdo, IN PIRP Irp, IN PKEVENT pev);
NTSTATUS StartDevice(PDEVICE_OBJECT fdo, PCM_PARTIAL_RESOURCE_LIST list);
VOID RemoveDevice(IN PDEVICE_OBJECT fdo);
VOID StopDevice(PDEVICE_OBJECT fdo);
VOID StartIo(IN PDEVICE_OBJECT fdo, IN PIRP Irp);
VOID OnCancelActiveIrp(IN PDEVICE_OBJECT fdo, IN PIRP Irp);
void UnlockDevice(IN PDEVICE_EXTENSION pdx);
void UnlockDevice(IN PDEVICE_OBJECT fdo);

// I/O request handlers

NTSTATUS RequestCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
NTSTATUS RequestClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
NTSTATUS RequestControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
NTSTATUS RequestPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
NTSTATUS AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT pdo);
VOID DriverUnload(IN PDRIVER_OBJECT fdo);
NTSTATUS DefaultPnpHandler(IN PDEVICE_OBJECT fdo, IN PIRP Irp);
NTSTATUS HandleRemoveDevice(IN PDEVICE_OBJECT fdo, IN PIRP Irp);
NTSTATUS HandleStartDevice(IN PDEVICE_OBJECT fdo, IN PIRP Irp);
NTSTATUS HandleStopDevice(IN PDEVICE_OBJECT fdo, IN PIRP Irp);


// {3d93c5c0-0085-11d1-821e-0080c88327ab}

#ifndef FAR
#define FAR
#endif 

DEFINE_GUID(GUID_HELLOWDM, 0x3d93c5c0, 0x0085, 0x11d1, 0x82, 0x1e, 0x00,
    0x80, 0xc8, 0x83, 0x27, 0xab);

#endif // HELLOWDM_H

⌨️ 快捷键说明

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