📄 ndiswdm.h
字号:
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 + -