?? pnpdev.h
字號:
//****************************************************************************
// File PNPDEV.H
//
// PnP device object
//
// Copyright (c) APSoft, 1998-2002.
// All rights reserved.
//
//****************************************************************************
#ifndef _PNPDEV_H_
#define _PNPDEV_H_
#include <debug.h> // Debugging support
//--------------------------- Local definitions ------------------------------
#define PNPDEV_TAG 'PNPD' // Tag
///////////////////////////////////////////////////////////////////////////////
// --- Class CPnpDevice --- //
///////////////////////////////////////////////////////////////////////////////
class CPnpDevice // PnP device
{
//----------------------- Construction/Destruction ---------------------------
public:
CPnpDevice (PDEVICE_OBJECT pDevObject,
PDEVICE_OBJECT pPdo,
PWSTR pLnkName);
virtual ~CPnpDevice (void);
//****************************************************************************
// *** Implementation ***
//****************************************************************************
//---------------------------- Object Creation -------------------------------
static NTSTATUS OnCreate (PDRIVER_OBJECT pDrvObject,
PDEVICE_OBJECT * ppDevObject,
ULONG uDevExtSize,
PWSTR pDevName,
PWSTR pLnkName,
DEVICE_TYPE DevType = FILE_DEVICE_UNKNOWN);
// We override global operator new and delete because object
// should be placed to the Device Extension block and Allocate/Free
// operation executed by IoCreateDevice/IoDeleteDevice
void * operator new (size_t nSize,
PDEVICE_OBJECT pDevObject);
void operator delete (void *);
//------------------------------- Services -----------------------------------
BOOLEAN DispatchMjRequest (PIRP pIrp,
NTSTATUS & ntStatus);
static NTSTATUS CallDriverSync (PDEVICE_OBJECT pDevice,
PIRP pIrp);
static NTSTATUS ForwardAndWait (PDEVICE_OBJECT pDevice,
PIRP pIrp);
//----------------------------- IRP handlers ---------------------------------
virtual BOOLEAN OnIrpCreate (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpCreateNamedPipe(PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpClose (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpRead (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpWrite (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpQueryInfo (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpSetInfo (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpQueryEA (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpSetEA (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpFlushBuffers (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpQueryVolInfo (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpSetVolInfo (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpDirCtrl (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpFSCtrl (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpDevCtrl (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpIntDevCtrl (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpShutDown (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpLockCtrl (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpCleanUp (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpCreateMailSlot (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpQuerySec (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpSetSec (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpPower (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpSysControl (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpDevChange (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpQueryQuota (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpSetQuota (PIRP, NTSTATUS &);
virtual BOOLEAN OnIrpPnP (PIRP, NTSTATUS &);
//-------------------------- IRP_MJ_PNP handlers -----------------------------
virtual NTSTATUS OnStartDevice (PIRP pIrp);
virtual NTSTATUS OnQueryRemoveDevice (PIRP pIrp);
virtual NTSTATUS OnRemoveDevice (PIRP pIrp);
virtual NTSTATUS OnCancelRemoveDevice(PIRP pIrp);
virtual NTSTATUS OnStopDevice (PIRP pIrp);
virtual NTSTATUS OnQueryStopDevice (PIRP pIrp);
virtual NTSTATUS OnCancelStopDevice (PIRP pIrp);
virtual NTSTATUS OnQueryDeviceRelations(PIRP pIrp);
virtual NTSTATUS OnQueryInterface (PIRP pIrp);
virtual NTSTATUS OnQueryCapabilities (PIRP pIrp);
virtual NTSTATUS OnQueryResources (PIRP pIrp);
virtual NTSTATUS OnQueryResourceReq (PIRP pIrp);
virtual NTSTATUS OnQueryDeviceText (PIRP pIrp);
virtual NTSTATUS OnFilterResReq (PIRP pIrp);
virtual NTSTATUS OnReadConfig (PIRP pIrp);
virtual NTSTATUS OnWriteConfig (PIRP pIrp);
virtual NTSTATUS OnEject (PIRP pIrp);
virtual NTSTATUS OnSetLock (PIRP pIrp);
virtual NTSTATUS OnQueryID (PIRP pIrp);
virtual NTSTATUS OnDeviceState (PIRP pIrp);
virtual NTSTATUS OnQueryBusInfo (PIRP pIrp);
virtual NTSTATUS OnDeviceUsageNotify (PIRP pIrp);
virtual NTSTATUS OnSurpriseRemoval (PIRP pIrp);
virtual NTSTATUS OnQueryLegacyBusInfo(PIRP pIrp);
virtual NTSTATUS DefPnPHandler (PIRP pIrp);
//****************************************************************************
// *** Internal implementation ***
//****************************************************************************
protected:
BOOLEAN LockDevice (void);
void UnlockDevice (void);
//--------------------------- Power Management -------------------------------
virtual NTSTATUS OnPowerComplete (PIRP pIrp);
virtual NTSTATUS OnQueryPower (PIRP pIrp,
POWER_STATE_TYPE pwType,
POWER_STATE pwState);
virtual void OnWorkItem (void);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -