www.pudn.com > PCIConf.rar > Driver.h


// Declarations for PCIConf driver 
// Copyright (C) 1999 by Walter Oney 
// All rights reserved 
 
#ifndef DRIVER_H 
#define DRIVER_H 
 
#define DRIVERNAME "PCICONF"				// for use in messages 
#define LDRIVERNAME L"PCICONF"				// for use in UNICODE string constants 
 
/////////////////////////////////////////////////////////////////////////////// 
// Device extension structure 
 
enum DEVSTATE { 
	STOPPED,								// device stopped 
	WORKING,								// started and working 
	PENDINGSTOP,							// stop pending 
	PENDINGREMOVE,							// remove pending 
	SURPRISEREMOVED,						// removed by surprise 
	REMOVED,								// removed 
	}; 
 
typedef struct _DEVICE_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 ifname;					// interface name 
	DEVSTATE state;							// current state of device 
	DEVSTATE prevstate;						// state prior to removal query 
	DEVICE_POWER_STATE devpower;			// current device power state 
	SYSTEM_POWER_STATE syspower;			// current system power state 
	DEVICE_CAPABILITIES devcaps;			// copy of most recent device capabilities 
	LONG handles;							// # open handles 
 
	// TODO add additional per-device declarations 
 
	} 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 CompleteRequest(IN PIRP Irp, IN NTSTATUS status); 
NTSTATUS ForwardAndWait(IN PDEVICE_OBJECT fdo, IN PIRP Irp); 
NTSTATUS SendDeviceSetPower(PDEVICE_EXTENSION fdo, DEVICE_POWER_STATE state, BOOLEAN wait = FALSE); 
VOID SendAsyncNotification(PVOID context); 
VOID EnableAllInterfaces(PDEVICE_EXTENSION pdx, BOOLEAN enable); 
VOID DeregisterAllInterfaces(PDEVICE_EXTENSION pdx); 
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 DispatchPower(PDEVICE_OBJECT fdo, PIRP Irp); 
NTSTATUS DispatchPnp(PDEVICE_OBJECT fdo, PIRP Irp); 
 
extern BOOLEAN win98; 
extern UNICODE_STRING servkey; 
 
#endif // DRIVER_H