www.pudn.com > Microsoft Windows驱动程序模型设计 源代码.zip > Driver.h


// Declarations for feature driver 
// Copyright (C) 1999 by Walter Oney 
// All rights reserved 
 
#ifndef DRIVER_H 
#define DRIVER_H 
#include  
 
#define DRIVERNAME "FEATURE"				// for use in messages 
#define LDRIVERNAME L"FEATURE" 
 
/////////////////////////////////////////////////////////////////////////////// 
// Device extension structure 
 
typedef struct tagDEVICE_EXTENSION { 
	PDEVICE_OBJECT DeviceObject;			// device object this extension belongs to 
	PDEVICE_OBJECT LowerDeviceObject;		// next lower driver in same stack 
	PDEVICE_OBJECT Pdo;						// the PDO 
	IO_REMOVE_LOCK RemoveLock;				// removal control locking structure 
	UNICODE_STRING devname; 
	PGENERIC_EXTENSION pgx;					// device extension for GENERIC.SYS 
	LONG handles;							// # open handles 
	USB_DEVICE_DESCRIPTOR dd;				// device descriptor 
	USBD_CONFIGURATION_HANDLE hconfig;		// selected configuration handle 
	PUSB_CONFIGURATION_DESCRIPTOR pcd;		// configuration descriptor 
	LANGID langid;							// default language id for strings 
	} DEVICE_EXTENSION, *PDEVICE_EXTENSION; 
 
/////////////////////////////////////////////////////////////////////////////// 
// Global functions 
 
VOID RemoveDevice(IN PDEVICE_OBJECT fdo); 
NTSTATUS CompleteRequest(IN PIRP Irp, IN NTSTATUS status, IN ULONG_PTR info); 
NTSTATUS SendAwaitUrb(PDEVICE_OBJECT fdo, PURB urb); 
VOID AbortPipe(PDEVICE_OBJECT fdo, USBD_PIPE_HANDLE hpipe); 
NTSTATUS ResetPipe(PDEVICE_OBJECT fdo, USBD_PIPE_HANDLE hpipe); 
VOID ResetDevice(PDEVICE_OBJECT fdo); 
NTSTATUS StartDevice(PDEVICE_OBJECT fdo, PCM_PARTIAL_RESOURCE_LIST raw, PCM_PARTIAL_RESOURCE_LIST translated); 
VOID StopDevice(PDEVICE_OBJECT fdo, BOOLEAN oktouch = FALSE); 
 
// I/O request handlers 
 
NTSTATUS DispatchCreate(PDEVICE_OBJECT fdo, PIRP Irp); 
NTSTATUS DispatchClose(PDEVICE_OBJECT fdo, PIRP Irp); 
NTSTATUS DispatchControl(PDEVICE_OBJECT fdo, PIRP Irp); 
NTSTATUS DispatchInternalControl(PDEVICE_OBJECT fdo, PIRP Irp); 
NTSTATUS DispatchPower(PDEVICE_OBJECT fdo, PIRP Irp); 
NTSTATUS DispatchPnp(PDEVICE_OBJECT fdo, PIRP Irp); 
 
extern BOOLEAN win98; 
extern UNICODE_STRING servkey; 
 
#define FEATURE_LED_DISPLAY 42 
 
#endif // DRIVER_H