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

📄 devclass.h

📁 RTL8139 网卡驱动源码 for WinCE.net CEPC
💻 H
字号:
//****************************************************************************
//                             File DEVCLASS.H
//
//                   Device object for functional driver
//
//                     Copyright (c) APSoft, 1998-2002.
//                          All rights reserved.
//
//****************************************************************************

#ifndef _DEVCLASS_H_
#define _DEVCLASS_H_

#include <pnpdev.h>                         // PnP device base class
#include <pcmiface.h>                       // PCMCIA interfaces

//-------------------------- Version information -----------------------------

#define VER_MAJOR               1
#define VER_MINOR               0
#define VER_API                 0

//------------------------------ Async. call ---------------------------------

typedef struct tagASYNC_CTX
{
    PIO_WORKITEM    pItem;                  // Wort item
    PIRP            pIrp;                   // IRP to complete
} ASYNC_CTX, * PASYNC_CTX;

#define ASYNC_DELAY             30000000L   // 3 sec in 100 ns


///////////////////////////////////////////////////////////////////////////////
//                        --- Class CFuncDevice ---                          //
///////////////////////////////////////////////////////////////////////////////
class CFuncDevice : public CPnpDevice       // Functional driver's device
{
//----------------------- Construction/Destruction ---------------------------

public:

                                CFuncDevice         (PDEVICE_OBJECT     pDevObject,
                                                     PDEVICE_OBJECT     pPdo,
                                                     PWSTR              pLnkName);
    virtual                    ~CFuncDevice         (void);


//****************************************************************************
//                         *** Implementation ***
//****************************************************************************
			
			NTSTATUS            OnGetMask           (PIRP           pIrp);			
			NTSTATUS			OnRelClient			(PIRP			pIrp); 
			NTSTATUS			OnRegClient			(PIRP			pIrp); 
			NTSTATUS			OnGetCIS			(PIRP			pIrp); 
			NTSTATUS			OnGetMemory			(PIRP			pIrp); 
            NTSTATUS            OnGetVersion        (PIRP           pIrp);
            NTSTATUS            OnGetIdSize         (PIRP           pIrp);
            NTSTATUS            OnGetId             (PIRP           pIrp);
            NTSTATUS            OnGetIdAsync        (PIRP           pIrp);


//****************************************************************************
//                     *** Internal implementation ***
//****************************************************************************
protected:

            void                OnWorkItem          (PASYNC_CTX     pCtx);
    static  void                _OnWorkItem         (PDEVICE_OBJECT pDevObject,
                                                     PVOID          pCtx);

            BOOLEAN             QueryInterface      (void);
            BOOLEAN             ReadWriteRequest    (BOOLEAN        fRead,
                                                     PVOID          pData,
                                                     ULONG          uOffset,
                                                     ULONG          uLength);

//----------------------------- IRP handlers ---------------------------------

    virtual BOOLEAN             OnIrpRead           (PIRP, NTSTATUS &);
    virtual BOOLEAN             OnIrpWrite          (PIRP, NTSTATUS &);
    virtual BOOLEAN             OnIrpDevCtrl        (PIRP, NTSTATUS &);

//-------------------------- Minor PnP functions -----------------------------

    virtual NTSTATUS            OnFilterResReq      (PIRP pIrp);

//--------------------------- Power Management -------------------------------

    virtual void                PowerOn             (void);
    virtual void                PowerOff            (void);

//-------------------------- Start/Stop handling -----------------------------

    virtual void                PreStopDevice       (void);
    virtual void                PreRemoveDevice     (PIRP               pIrp);

    virtual NTSTATUS            PreStartDevice      (PIRP               pIrp);
    virtual void                PostStartDevice     (PIRP               pIrp,
                                                     NTSTATUS           ntStatus);

    virtual NTSTATUS            StartDevice         (PCM_PARTIAL_RESOURCE_LIST pList);
    virtual void                StopDevice          (void);


//****************************************************************************
//                        *** Member variables ***
//****************************************************************************
protected:
            ULONG               m_uStart;           // Memory window start address
            ULONG               m_uLength;          // Memory window length
			DWORD				m_dwMask;  
			ULONG               m_uMemBaseAddr;     
			PHYSICAL_ADDRESS    m_phyMemAddr; 
            CPcmciaBusIface     m_BusIface;         // Standard bus interface
            CPcmciaIface        m_PcmciaIface;      // Standard PCMCIA interface
};

//------------------------- Inline implementation ----------------------------

inline void CFuncDevice::_OnWorkItem(PDEVICE_OBJECT pDevObject, PVOID pCtx)
{
    CFuncDevice * p = (CFuncDevice *)pDevObject->DeviceExtension;
    ASSERTS_PNPDRV(p != NULL);

    if (p != NULL)
        p->OnWorkItem((PASYNC_CTX)pCtx);
}

#endif                                      // #ifndef _DEVCLASS_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -