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

📄 nic_def.h

📁 ddk开发pci范例,使用9054芯片
💻 H
📖 第 1 页 / 共 2 页
字号:
/*++
    _condition  - condition to wait for 
    _timeout_ms - timeout value in milliseconds
    _result     - TRUE if condition becomes true before it times out
--*/
#define MP_STALL_AND_WAIT(_condition, _timeout_ms, _result)     \
{                                                               \
    int counter;                                                \
    _result = FALSE;                                            \
    for(counter = _timeout_ms * 50; counter != 0; counter--)    \
    {                                                           \
        if(_condition)                                          \
        {                                                       \
            _result = TRUE;                                     \
            break;                                              \
        }                                                       \
        KeStallExecutionProcessor(20);                                 \
    }                                                           \
}

__inline VOID MP_STALL_EXECUTION(
   IN ULONG MsecDelay) //Eliyas UINT to ULONG
{
    // Delay in 100 usec increments
    MsecDelay *= 10;
    while (MsecDelay)
    {
        KeStallExecutionProcessor(100);
        MsecDelay--;
    }
}

typedef struct _FDO_DATA FDO_DATA, *PFDO_DATA;


NTSTATUS
NICInitializeDeviceExtension(
    IN OUT PFDO_DATA FdoData
    );

NTSTATUS
NICGetDeviceInformation(
    IN OUT PFDO_DATA FdoData
);

NTSTATUS
NICAllocateDeviceResources(
    IN OUT PFDO_DATA FdoData,
    IN PIRP Irp
    );

NTSTATUS
NICMapHWResources(
    IN OUT PFDO_DATA FdoData,
    IN PIRP Irp
    );

NTSTATUS
NICUnmapHWResources(
    IN OUT PFDO_DATA FdoData
    );


NTSTATUS
NICFreeDeviceResources(
    IN OUT PFDO_DATA FdoData
    );

NTSTATUS 
NICInitializeAdapter(
    IN  PFDO_DATA     FdoData
    );

NTSTATUS
NICReadAdapterInfo(
    IN PFDO_DATA FdoData
    );

NTSTATUS 
NICSelfTest(
    IN  PFDO_DATA     FdoData
    );

VOID 
HwSoftwareReset(
    IN  PFDO_DATA     FdoData
    );

BOOLEAN 
NICInterruptHandler(
    IN PKINTERRUPT Interupt, 
    IN PVOID ServiceContext
    );

#if 0
NTSTATUS
ReadWriteConfigSpace(
    IN PDEVICE_OBJECT DeviceObject,
    IN ULONG          ReadOrWrite, // 0 for read 1 for write
    IN PVOID          Buffer,
    IN ULONG          Offset,
    IN ULONG          Length
    );
#endif

NTSTATUS
GetPCIBusInterfaceStandard(
    IN  PDEVICE_OBJECT DeviceObject,
    OUT PBUS_INTERFACE_STANDARD    BusInterfaceStandard
    );


NTSTATUS 
NICAllocAdapterMemory(
    IN  PFDO_DATA     FdoData
    );

VOID 
NICFreeAdapterMemory(
    IN  PFDO_DATA     FdoData
    );

NTSTATUS
NICAllocRfd(
    IN  PFDO_DATA     FdoData,
    IN  PMP_RFD         pMpRfd
    );

VOID 
NICFreeRfd(
    IN  PFDO_DATA     FdoData,
    IN  PMP_RFD         pMpRfd
    );

VOID 
NICReturnRFD(
    IN  PFDO_DATA FdoData,
    IN  PMP_RFD		pMpRfd
    );

NTSTATUS
HwConfigure(
    IN  PFDO_DATA     FdoData
    );

NTSTATUS 
HwSetupIAAddress(
    IN  PFDO_DATA     FdoData
    );

NTSTATUS 
HwClearAllCounters(
    IN  PFDO_DATA     FdoData
    );

NTSTATUS 
NICInitRecv(
    IN  PFDO_DATA     FdoData
    );

VOID 
NICInitSend(
    IN  PFDO_DATA     FdoData
    );

NTSTATUS 
NICLinkDetection(
    IN  PFDO_DATA                   FdoData
    );

NTSTATUS
NICHandleQueryOidRequest(
    IN  PFDO_DATA                   FdoData,
    IN  PIRP                        Irp,
    OUT PULONG                      BytesWritten
    );

NTSTATUS
NICHandleSetOidRequest(
    IN  PFDO_DATA                   FdoData,
    IN  PIRP                        Irp
    );


VOID 
NICServiceIndicateStatusIrp(
    IN PFDO_DATA        FdoData
    );


NTSTATUS 
NICGetStatsCounters(
    IN  PFDO_DATA     FdoData, 
    IN  NDIS_OID        Oid,
    OUT PULONG64        pCounter);
    
NTSTATUS 
NICSetPacketFilter(
    IN  PFDO_DATA     FdoData,
    IN  ULONG           PacketFilter);

NTSTATUS 
NICSetMulticastList(
    IN  PFDO_DATA     FdoData);
    
ULONG 
NICGetMediaConnectStatus(
    IN  PFDO_DATA     FdoData);
    
NTSTATUS 
NICWrite(
    IN  PFDO_DATA     FdoData,
    IN  PIRP          Irp
);

VOID 
NICWritePacket(
    IN  PFDO_DATA   FdoData,
    IN  PIRP    Irp,
    IN  BOOLEAN       bFromQueue
    );

NTSTATUS 
NICSendPacket(
    IN  PFDO_DATA     FdoData,
    IN  PMP_TCB         pMpTcb,
    IN  PSCATTER_GATHER_LIST   pFragList);

NTSTATUS 
NICStartSend(
    IN  PFDO_DATA     FdoData,
    IN  PMP_TCB         pMpTcb);;

VOID
NICProcessSGList(
    IN  PDEVICE_OBJECT          DeviceObject,
    IN  PIRP                    Irp,//unused
    IN  PSCATTER_GATHER_LIST    pSGL,
    IN  PVOID                   Context
    );


VOID 
NICDpcForIsr(
    IN PKDPC Dpc,
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP  SystemArgument1,
    IN PVOID SystemArgument2
    );

NTSTATUS 
NICHandleSendInterrupt(
    IN  PFDO_DATA  FdoData
    );

VOID 
NICFreeQueuedSendPackets(
    IN  PFDO_DATA     FdoData
    );


VOID
NICFreeBusySendPackets(
    IN  PFDO_DATA  FdoData
    );

VOID
NICCompleteSendRequest(
    PFDO_DATA FdoData,
    PIRP Irp,
    NTSTATUS Status,
    ULONG   Information,
    BOOLEAN AtDispatchLevel
    );

VOID 
NICShutdown(
    IN  PFDO_DATA  FdoData
    );


VOID 
NICHandleRecvInterrupt(
    IN  PFDO_DATA  FdoData
    );

NTSTATUS 
NICStartRecv(
    IN  PFDO_DATA  FdoData
    );

VOID 
NICResetRecv(
    IN  PFDO_DATA   FdoData
    );

VOID
NICServiceReadIrps(
    PFDO_DATA FdoData,
    PMP_RFD *PacketArray,
    ULONG PacketArrayCount
    );



VOID 
NICWatchDogTimerDpc(
    IN  PVOID	    SystemSpecific1,
    IN  PVOID	    FunctionContext,
    IN  PVOID	    SystemSpecific2, 
    IN  PVOID	    SystemSpecific3
    );

BOOLEAN 
NICCheckForHang(
    IN  PFDO_DATA     FdoData
    );

NTSTATUS 
NICReset(
    IN PFDO_DATA FdoData
    );

MEDIA_STATE
NICIndicateMediaState(
    IN PFDO_DATA FdoData
    );


MEDIA_STATE 
NICGetMediaState(
    IN PFDO_DATA FdoData
    );

VOID 
NICExtractPMInfoFromPciSpace(
    PFDO_DATA FdoData,
    PUCHAR pPciConfig
    );

NTSTATUS
NICSetPower(
    PFDO_DATA     FdoData ,
    DEVICE_POWER_STATE   PowerState 
    );

VOID
NICFillPoMgmtCaps (
    IN PFDO_DATA                 FdoData, 
    IN OUT PNDIS_PNP_CAPABILITIES  pPower_Management_Capabilities, 
    IN OUT PNDIS_STATUS            pStatus,
    IN OUT PULONG                  pulInfoLen
    );

NTSTATUS
NICAddWakeUpPattern(
    IN PFDO_DATA  FdoData,
    IN PVOID        InformationBuffer, 
    IN UINT         InformationBufferLength,
    OUT PULONG      BytesRead,
    OUT PULONG      BytesNeeded   
    );

NTSTATUS
NICRemoveWakeUpPattern(
    IN PFDO_DATA  FdoData,
    IN PVOID        InformationBuffer, 
    IN UINT         InformationBufferLength,
    OUT PULONG      BytesRead,
    OUT PULONG      BytesNeeded
    );

VOID
NICRemoveAllWakeUpPatterns(
    PFDO_DATA FdoData
    );

NTSTATUS
NICConfigureForWakeUp(
    IN PFDO_DATA FdoData,
    IN BOOLEAN  AddPattern
    );

VOID
NICGetDeviceInfSettings(
    IN OUT  PFDO_DATA   FdoData
    );

VOID
NICAllocRfdWorkItem(
    IN PDEVICE_OBJECT   DeviceObject,
    IN PVOID            Context
);

VOID
NICFreeRfdWorkItem(
    IN PDEVICE_OBJECT   DeviceObject,
    IN PVOID            Context
);

typedef 
USHORT
(*PREAD_PORT)(
    IN USHORT *Register
    );

typedef 
VOID
(*PWRITE_PORT)(
    IN USHORT *Register,
    IN USHORT  Value
    );


#endif

⌨️ 快捷键说明

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