📄 pnpdrv.h
字号:
//****************************************************************************
// File PNPDRV.H
//
// PnP driver object
//
// Copyright (c) APSoft, 1998-2002.
// All rights reserved.
//
//****************************************************************************
#ifndef _PNPDRV_H_
#define _PNPDRV_H_
#include <debug.h> // Debugging support
///////////////////////////////////////////////////////////////////////////////
// --- Class CPnpDriver --- //
///////////////////////////////////////////////////////////////////////////////
class CPnpDriver // PnP driver
{
//----------------------- Construction/Destruction ---------------------------
public:
CPnpDriver (PDRIVER_OBJECT pDrvObject,
PUNICODE_STRING pusRegPath);
virtual ~CPnpDriver (void);
//****************************************************************************
// *** Implementation ***
//****************************************************************************
static _MAIN_CLASS * GetObject (void);
PDRIVER_OBJECT GetDrvObject (void) const;
BOOLEAN DefIrpMjHandler (PDEVICE_OBJECT pDevice,
PIRP pIrp,
NTSTATUS & ntStatus);
//****************************************************************************
// *** Internal implementation ***
//****************************************************************************
protected:
static NTSTATUS _OnAddDevice (PDRIVER_OBJECT pDriver,
PDEVICE_OBJECT pPdo);
virtual NTSTATUS OnAddDevice (PDEVICE_OBJECT pPdo);
void SetIrpDispatch (void);
static NTSTATUS _GenericIrpHandler (PDEVICE_OBJECT pDevice,
PIRP pIrp);
virtual NTSTATUS GenericIrpHandler (PDEVICE_OBJECT pDevice,
PIRP pIrp);
//****************************************************************************
// *** Member variables ***
//****************************************************************************
protected:
PDRIVER_OBJECT m_pDrvObject; // Driver object
UNICODE_STRING m_usRegPath; // Registry path
};
//------------------------- Inline implementation ----------------------------
inline NTSTATUS CPnpDriver::_OnAddDevice(PDRIVER_OBJECT pDriver, PDEVICE_OBJECT pPdo)
{
CPnpDriver * pThis = (CPnpDriver *)GetObject();
return pThis->OnAddDevice(pPdo);
}
inline NTSTATUS CPnpDriver::OnAddDevice(PDEVICE_OBJECT pPdo)
{
return STATUS_UNSUCCESSFUL;
}
inline NTSTATUS CPnpDriver::_GenericIrpHandler(PDEVICE_OBJECT pDevice, PIRP pIrp)
{
CPnpDriver * pThis = (CPnpDriver *)GetObject();
return pThis->GenericIrpHandler(pDevice, pIrp);
}
inline PDRIVER_OBJECT CPnpDriver::GetDrvObject(void) const
{
return m_pDrvObject;
}
//------------------------- new/delete overrides -----------------------------
inline void * __cdecl operator new(size_t size)
{
return ExAllocatePool(NonPagedPool, size);
}
inline void __cdecl operator delete(void * pBlock)
{
ExFreePool(pBlock);
}
#endif // #ifndef _PNPDRV_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -