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

📄 ndiswdm.h

📁 网络驱动开发
💻 H
📖 第 1 页 / 共 2 页
字号:
    if (((STATUS_SUCCESS == (_NtStatus)) ||                                  \
        (STATUS_PENDING == (_NtStatus)) ||                                   \
        (STATUS_BUFFER_OVERFLOW == (_NtStatus)) ||                           \
        (STATUS_UNSUCCESSFUL == (_NtStatus)) ||                                   \
        (STATUS_INSUFFICIENT_RESOURCES == (_NtStatus)) ||                                 \
        (STATUS_NOT_SUPPORTED == (_NtStatus))))                              \
    {                                                                               \
        *(_pNdisStatus) = (NDIS_STATUS)(_NtStatus);                                    \
    }                                                                               \
    else if (STATUS_BUFFER_TOO_SMALL == (_NtStatus))                         \
    {                                                                               \
        /*                                                                          \
         *  The above NDIS status codes require a little special casing.            \
         */                                                                         \
        *(_pNdisStatus) = NDIS_STATUS_BUFFER_TOO_SHORT;                            \
    }                                                                               \
    else if (STATUS_INVALID_BUFFER_SIZE == (_NtStatus))                           \
    {                                                                               \
        *(_pNdisStatus) = NDIS_STATUS_INVALID_LENGTH;                                 \
    }                                                                               \
    else if (STATUS_INVALID_PARAMETER == (_NtStatus))                             \
    {                                                                               \
        *(_pNdisStatus) = NDIS_STATUS_INVALID_DATA;                                   \
    }                                                                               \
    else if (STATUS_NO_MORE_ENTRIES == (_NtStatus))                        \
    {                                                                               \
        *(_pNdisStatus) = NDIS_STATUS_ADAPTER_NOT_FOUND;                                     \
    }                                                                               \
    else if (STATUS_DEVICE_NOT_READY == (_NtStatus))                        \
    {                                                                               \
        *(_pNdisStatus) = NDIS_STATUS_ADAPTER_NOT_READY;                                    \
    }                                                                               \
    else                                                                            \
    {                                                                               \
        *(_pNdisStatus) = NDIS_STATUS_FAILURE;                                        \
    }                                                                               \
}




//--------------------------------------
// Miniport routines
//--------------------------------------

NDIS_STATUS 
DriverEntry(
    IN PVOID DriverObject,
    IN PVOID RegistryPath);

NDIS_STATUS 
MPInitialize(
    OUT PNDIS_STATUS OpenErrorStatus,
    OUT PUINT SelectedMediumIndex,
    IN PNDIS_MEDIUM MediumArray,
    IN UINT MediumArraySize,
    IN NDIS_HANDLE MiniportAdapterHandle,
    IN NDIS_HANDLE WrapperConfigurationContext);


BOOLEAN 
MPCheckForHang(
    IN NDIS_HANDLE MiniportAdapterContext);

VOID 
MPHalt(
    IN  NDIS_HANDLE MiniportAdapterContext);

NDIS_STATUS 
MPReset(
    OUT PBOOLEAN AddressingReset,
    IN  NDIS_HANDLE MiniportAdapterContext
    );

VOID 
MPUnload(
    IN  PDRIVER_OBJECT  DriverObject
    );

NDIS_STATUS 
MPQueryInformation(
    IN NDIS_HANDLE MiniportAdapterContext,
    IN NDIS_OID Oid,
    IN PVOID InformationBuffer,
    IN ULONG InformationBufferLength,
    OUT PULONG BytesWritten,
    OUT PULONG BytesNeeded);


VOID 
MPReturnPacket(
    IN NDIS_HANDLE  MiniportAdapterContext,
    IN PNDIS_PACKET Packet);

VOID 
MPSendPackets(
    IN  NDIS_HANDLE             MiniportAdapterContext,
    IN  PPNDIS_PACKET           PacketArray,
    IN  UINT                    NumberOfPackets);

NDIS_STATUS
MPSetInformation(
    IN NDIS_HANDLE MiniportAdapterContext,
    IN NDIS_OID Oid,
    IN PVOID InformationBuffer,
    IN ULONG InformationBufferLength,
    OUT PULONG BytesRead,
    OUT PULONG BytesNeeded);

VOID 
MPShutdown(
    IN  NDIS_HANDLE MiniportAdapterContext);

                                                        
BOOLEAN 
NICCopyPacket(
    PMP_ADAPTER Adapter,
    PTCB pTCB, 
    PNDIS_PACKET Packet);
    
                 
VOID 
NICFreeRecvPacket(
    PMP_ADAPTER Adapter,
    PNDIS_PACKET Packet);
    
VOID 
NICFreeSendTCB(
    IN PMP_ADAPTER Adapter,
    IN PTCB pTCB);

   
VOID 
NICFreeQueuedSendPackets(
    PMP_ADAPTER Adapter
    );
    
  
NDIS_STATUS 
NICInitializeAdapter(
    IN PMP_ADAPTER Adapter, 
    IN  NDIS_HANDLE  WrapperConfigurationContext
);
                                
NDIS_STATUS 
NICAllocAdapter(
    PMP_ADAPTER *Adapter
    );

VOID 
NICFreeAdapter(
    PMP_ADAPTER Adapter
    );

NDIS_STATUS 
NICAllocSendResources(
    PMP_ADAPTER Adapter);

NDIS_STATUS 
NICAllocRecvResources(
    PMP_ADAPTER Adapter);

VOID 
NICFreeSendResources(
    PMP_ADAPTER Adapter);

VOID 
NICFreeRecvResources(
    PMP_ADAPTER Adapter);
    
VOID 
NICAttachAdapter(
    PMP_ADAPTER Adapter
    );

VOID 
NICDetachAdapter(
    PMP_ADAPTER Adapter
    );
                   
NDIS_STATUS 
NICReadRegParameters(
    PMP_ADAPTER Adapter,
    NDIS_HANDLE ConfigurationHandle);

NDIS_STATUS 
NICGetStatsCounters(
    PMP_ADAPTER Adapter, 
    NDIS_OID Oid,
    PULONG pCounter);
    
NDIS_STATUS
NICSetPacketFilter(
    IN PMP_ADAPTER Adapter,
    IN ULONG PacketFilter);

NDIS_STATUS 
NICSetMulticastList(
    IN PMP_ADAPTER              Adapter,
    IN PVOID                    InformationBuffer,
    IN ULONG                    InformationBufferLength,
    OUT PULONG                  pBytesRead,
    OUT PULONG                  pBytesNeeded
    );
    
ULONG
NICGetMediaConnectStatus(
    PMP_ADAPTER Adapter);

#ifdef NDIS51_MINIPORT

VOID 
MPCancelSendPackets(
    IN  NDIS_HANDLE     MiniportAdapterContext,
    IN  PVOID           CancelId
    );
VOID MPPnPEventNotify(
    IN  NDIS_HANDLE             MiniportAdapterContext,
    IN  NDIS_DEVICE_PNP_EVENT   PnPEvent,
    IN  PVOID                   InformationBuffer,
    IN  ULONG                   InformationBufferLength
    );

#endif

PUCHAR 
DbgGetOidName
    (ULONG oid
    );             


VOID 
NICInitWorkItemCallback(
    PNDIS_WORK_ITEM WorkItem, 
    PVOID Void);

NTSTATUS 
NICInitAdapterWorker(
    PMP_ADAPTER Adapter    
    ) ;
    
VOID
NICPostReadsWorkItemCallBack(
    PNDIS_WORK_ITEM WorkItem, 
    PVOID Dummy
    );

NTSTATUS
NICMakeSynchronousIoctl(
    IN PDEVICE_OBJECT       TopOfDeviceStack,
    IN PFILE_OBJECT         FileObject,
    IN ULONG                IoctlControlCode,
    IN OUT PVOID            InputBuffer,
    IN ULONG                InputBufferLength,
    IN OUT PVOID            OutputBuffer,
    IN ULONG                OutputBufferLength,
    OUT PULONG              BytesReadOrWritten    
    );

NTSTATUS
NICMakeSynchronousIoCtlCompletion(
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp,
    IN PVOID            Context
    );

NTSTATUS
NICPostWriteRequest(
    PMP_ADAPTER Adapter,
    PTCB    pTCB
    );

NTSTATUS
NICWriteRequestCompletion(
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp,
    IN PVOID            Context
    );

VOID
NICFreeBusySendPackets(
    PMP_ADAPTER Adapter
    );

NTSTATUS
NICPostReadRequest(
    PMP_ADAPTER Adapter,
    PRCB    pRCB
    );

NTSTATUS
NICReadRequestCompletion(
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp,
    IN PVOID            Context
    );

VOID 
NICFreeRCB(
    IN PRCB pRCB);

VOID
NICFreeBusyRecvPackets(
    PMP_ADAPTER Adapter
    );

NDIS_STATUS
NICSendRequest(
    IN PMP_ADAPTER                  Adapter,
    IN NDIS_REQUEST_TYPE            RequestType,
    IN NDIS_OID                     Oid,
    IN PVOID                        InformationBuffer,
    IN ULONG                        InformationBufferLength,
    OUT PULONG                      BytesReadOrWritten,
    OUT PULONG                      BytesNeeded
    );

NDIS_STATUS
NICForwardRequest(
    IN PMP_ADAPTER                  Adapter,
    IN NDIS_REQUEST_TYPE            RequestType,
    IN NDIS_OID                     Oid,
    IN PVOID                        InformationBuffer,
    IN ULONG                        InformationBufferLength,
    OUT PULONG                      BytesReadOrWritten,
    OUT PULONG                      BytesNeeded
    );

VOID 
NICRequestWorkItemCallback(
    IN PNDIS_WORK_ITEM WorkItem, 
    IN PVOID Dummy) ;

VOID
NICIndicateReceivedPacket(
    IN PRCB             pRCB,
    IN ULONG            BytesRead
    );

BOOLEAN
NICIsPacketAcceptable(
    IN PMP_ADAPTER Adapter,
    IN PUCHAR   pDstMac
    );

BOOLEAN
NICIsMulticastMatch(
    IN PMP_ADAPTER                  Adapter,
    IN PUCHAR                       pDstMac
    );


#ifdef INTERFACE_WITH_NDISPROT

VOID 
NICUnregisterExCallback(
    IN PMP_ADAPTER Adapter
);

BOOLEAN 
NICRegisterExCallback(
    PMP_ADAPTER Adapter);


VOID
NICExCallback(
    PVOID   CallBackContext,
    PVOID   Source,
    PVOID   AreYouThere
    );

NTSTATUS
NICOpenNdisProtocolInterface(
    PMP_ADAPTER Adapter
    );


#else

#define NICUnregisterExCallback(Adapter)  
#define NICRegisterExCallback(Adapter) TRUE
#define NICExCallback() 

#endif


NTSTATUS
NICPostAsynchronousStatusIndicationIrp(
    IN PMP_ADAPTER Adapter
);

NTSTATUS
NICStatusIndicationIrpCompletionRoutine(
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp,
    IN PVOID            Context
    );

VOID
NICCancelStatusIndicationIrp(
    IN PMP_ADAPTER Adapter
    );

#if defined(NDIS50_MINIPORT)
//
// Following function prototypes are not defined in the Win2K WDM.H.
// Please note IoReuseIrp is not supported on Win9x.
//
NTKERNELAPI
VOID
IoReuseIrp(
    IN OUT PIRP Irp,
    IN NTSTATUS Iostatus
    );

NTSYSAPI
NTSTATUS
NTAPI
ZwOpenFile(
    OUT PHANDLE FileHandle,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_ATTRIBUTES ObjectAttributes,
    OUT PIO_STATUS_BLOCK IoStatusBlock,
    IN ULONG ShareAccess,
    IN ULONG OpenOptions
    );


NTKERNELAPI
VOID
ExFreePoolWithTag(
    IN PVOID P,
    IN ULONG Tag
    );
#endif

#endif    // NDISWDM_H


⌨️ 快捷键说明

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