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

📄 pnpdev.h

📁 RTL8139 网卡驱动源码 for WinCE.net CEPC
💻 H
📖 第 1 页 / 共 2 页
字号:
//****************************************************************************
//                             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 + -