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

📄 pnpdrv.h

📁 RTL8139 网卡驱动源码 for WinCE.net CEPC
💻 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 + -