22#define BREAK_ON_MINIPORT_INIT 0
28#define ROUTE_DATA_SIZE 256
31#define MEDIA_ARRAY_SIZE 15
91 UINT HeaderBufferSize,
92 PVOID LookaheadBuffer,
93 UINT LookaheadBufferSize)
99 DbgPrint(
"*** RECEIVE PACKET START ***\n");
102 for (
i = 0;
i < HeaderBufferSize;
i++) {
111 Length = (LookaheadBufferSize < 64)? LookaheadBufferSize : 64;
118 DbgPrint(
"\n*** RECEIVE PACKET STOP ***\n");
179 UINT HeaderBufferSize,
180 PVOID LookaheadBuffer,
181 UINT LookaheadBufferSize,
200 "HeaderBufferSize (0x%X) LookaheadBuffer (0x%X) LookaheadBufferSize (0x%X).\n",
201 Adapter, HeaderBuffer, HeaderBufferSize, LookaheadBuffer, LookaheadBufferSize));
204 MiniDisplayPacket2(HeaderBuffer, HeaderBufferSize, LookaheadBuffer, LookaheadBufferSize);
225 (
"XXX (%x) %x %x %x %x %x %x %x XXX\n",
245 CurrentEntry = CurrentEntry->
Flink;
276 PacketsToReturn[
i]->WrapperReserved[0]--;
277 if (PacketsToReturn[
i]->WrapperReserved[0] == 0)
336 UINT FirstBufferLength, TotalBufferLength, LookAheadSize, HeaderSize;
338 PVOID NdisBufferVA, LookAheadBuffer;
348 LookAheadSize = TotalBufferLength - HeaderSize;
351 if (!LookAheadBuffer)
371 TotalBufferLength - HeaderSize);
377 CurrentEntry = CurrentEntry->
Flink;
474 CurrentEntry = CurrentEntry->
Flink;
504 if (MacBlock->
Binding->RequestCompleteHandler !=
NULL)
506 (*MacBlock->
Binding->RequestCompleteHandler)(
507 MacBlock->
Binding->ProtocolBindingContext,
562 DmaOperations->PutScatterGatherList(
682 *(PacketAddress), *(PacketAddress+1), *(PacketAddress+2), *(PacketAddress+3), *(PacketAddress+4), *(PacketAddress+5),
683 *(AdapterAddress), *(AdapterAddress+1), *(AdapterAddress+2), *(AdapterAddress+3), *(AdapterAddress+4), *(AdapterAddress+5)));
738 CurrentEntry = CurrentEntry->
Flink;
985 PVOID WorkItemContext,
1021 if (!MiniportWorkItem)
1053 PVOID *WorkItemContext)
1079 *WorkItemContext =
Packet;
1083 else if (MiniportWorkItem)
1137 NdisRequest->DATA.QUERY_INFORMATION.InformationBuffer,
1138 NdisRequest->DATA.QUERY_INFORMATION.InformationBufferLength,
1147 NdisRequest->DATA.SET_INFORMATION.InformationBuffer,
1148 NdisRequest->DATA.SET_INFORMATION.InformationBufferLength,
1184#undef NdisMSetInformationComplete
1204#undef NdisMQueryInformationComplete
1228 PVOID WorkItemContext;
1238 (Adapter, &WorkItemType, &WorkItemContext);
1244 switch (WorkItemType)
1307 ( Adapter, (
PNDIS_PACKET)WorkItemContext, NdisStatus );
1330 NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)(
1332 Adapter->NdisMiniportBlock.MiniportAdapterContext);
1335 Adapter->NdisMiniportBlock.ResetStatus = NdisStatus;
1356 Adapter->NdisMiniportBlock.PendingRequest = (
PNDIS_REQUEST)WorkItemContext;
1371 Adapter->NdisMiniportBlock.PendingRequest =
NULL;
1409 CurrentEntry = CurrentEntry->
Flink;
1436 CurrentEntry = CurrentEntry->
Flink;
1457 Miniport->Log =
NULL;
1562#undef NdisMIndicateStatus
1577#undef NdisMIndicateStatusComplete
1609 WCHAR *RegistryBuffer;
1613 ASSERT(NdisWrapperHandle);
1615 *NdisWrapperHandle =
NULL;
1617#if BREAK_ON_MINIPORT_INIT
1667 *NdisWrapperHandle = Miniport;
1720 if(!BugcheckContext)
1740 BugcheckContext,
sizeof(*BugcheckContext), (
PUCHAR)
"Ndis Miniport");
1843 if (
Irp->PendingReturned)
1876 Irp->IoStatus.Information = 0;
1907 ULONG ResourceListSize;
1913 UINT MaxMulticastAddresses;
1948 if (
Stack->Parameters.StartDevice.AllocatedResources !=
NULL)
1951 PartialResourceList.Count;
1976 Stack->Parameters.StartDevice.AllocatedResources,
1980 Stack->Parameters.StartDevice.AllocatedResources,
1984 if (
Stack->Parameters.StartDevice.AllocatedResourcesTranslated !=
NULL)
1987 PartialResourceList.Count;
2002 Stack->Parameters.StartDevice.AllocatedResourcesTranslated,
2069 SlotNumber.u.bits.DeviceNumber = (PciSlotNumber >> 16) & 0xFFFF;
2070 SlotNumber.u.bits.FunctionNumber = PciSlotNumber & 0xFFFF;
2101 ZwClose(WrapperContext.RegistryHandle);
2112 (
ULONG_PTR)Adapter->NdisMiniportBlock.TimerQueue,
2120 (
ULONG_PTR)Adapter->NdisMiniportBlock.TimerQueue,
2141 NdisStatus =
DoQueries(Adapter, AddressOID);
2203 CurrentEntry = CurrentEntry->Flink;
2282 Irp->IoStatus.Information = 0;
2301 Irp->IoStatus.Information = 0;
2311 Stack->Parameters.DeviceIoControl.OutputBufferLength,
2314 Irp->IoStatus.Information = Written;
2430 static const WCHAR ClassKeyName[] = {
'C',
'l',
'a',
's',
's',
'\\'};
2431 static const WCHAR LinkageKeyName[] = {
'\\',
'L',
'i',
'n',
'k',
'a',
'g',
'e',0};
2434 WCHAR *LinkageKeyBuffer;
2435 ULONG DriverKeyLength;
2447 if (MiniportPtr ==
NULL)
2452 Miniport = *MiniportPtr;
2463 0,
NULL, &DriverKeyLength);
2471 sizeof(ClassKeyName) +
sizeof(LinkageKeyName));
2472 if (LinkageKeyBuffer ==
NULL)
2479 DriverKeyLength, LinkageKeyBuffer +
2480 (
sizeof(ClassKeyName) /
sizeof(
WCHAR)),
2490 RtlCopyMemory(LinkageKeyBuffer, ClassKeyName,
sizeof(ClassKeyName));
2491 RtlCopyMemory(LinkageKeyBuffer + ((
sizeof(ClassKeyName) + DriverKeyLength) /
2492 sizeof(
WCHAR)) - 1, LinkageKeyName,
sizeof(LinkageKeyName));
2541 &GUID_DEVINTERFACE_NET,
2625 Irp->IoStatus.Information = 0;
2659 switch (MiniportCharacteristics->MajorNdisVersion)
2670 switch (MiniportCharacteristics->MinorNdisVersion)
2692 MiniportCharacteristics->MajorNdisVersion,
2693 MiniportCharacteristics->MinorNdisVersion));
2702 if ((!MiniportCharacteristics->HaltHandler) ||
2703 (!MiniportCharacteristics->InitializeHandler)||
2704 (!MiniportCharacteristics->ResetHandler))
2710 if (MiniportCharacteristics->MajorNdisVersion < 0x05)
2712 if ((!MiniportCharacteristics->QueryInformationHandler) ||
2713 (!MiniportCharacteristics->SetInformationHandler))
2721 if (((!MiniportCharacteristics->QueryInformationHandler) ||
2722 (!MiniportCharacteristics->SetInformationHandler)) &&
2723 (!MiniportCharacteristics->CoRequestHandler))
2730 if (MiniportCharacteristics->MajorNdisVersion == 0x03)
2732 if (!MiniportCharacteristics->SendHandler)
2738 else if (MiniportCharacteristics->MajorNdisVersion == 0x04)
2741 if ((!MiniportCharacteristics->SendHandler) &&
2742 (!MiniportCharacteristics->SendPacketsHandler))
2748 else if (MiniportCharacteristics->MajorNdisVersion == 0x05)
2752 if ((!MiniportCharacteristics->SendHandler) &&
2753 (!MiniportCharacteristics->SendPacketsHandler) &&
2754 (!MiniportCharacteristics->CoSendPacketsHandler))
2776 *MiniportPtr = Miniport;
2792#undef NdisMResetComplete
2806#undef NdisMSendComplete
2828#undef NdisMSendResourcesAvailable
2840#undef NdisMTransferDataComplete
2855#undef NdisMSetAttributes
2907 if (CheckForHangTimeInSeconds > 0)
2943 DueTime.QuadPart = (-1) * 10 * MicrosecondsToSleep;
2982 for (
j = 0;
j < 16;
j++)
2991 for (
j = 0;
j < 16;
j++)
3333 Irp->IoStatus.Status = NdisStatus;
3338 CurrentEntry = CurrentEntry->Flink;
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
PDEVICE_OBJECT PhysicalDeviceObject
UINT CopyBufferChainToBuffer(PUCHAR DstData, PNDIS_BUFFER SrcBuffer, UINT SrcOffset, UINT Length)
UINT CopyPacketToBuffer(PUCHAR DstData, PNDIS_PACKET SrcPacket, UINT SrcOffset, UINT Length)
BOOLEAN NTAPI KeDeregisterBugCheckCallback(IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
BOOLEAN NTAPI KeRegisterBugCheckCallback(IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord, IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine, IN PVOID Buffer, IN ULONG Length, IN PUCHAR Component)
#define NT_SUCCESS(StatCode)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
_In_ PIO_STACK_LOCATION IrpSp
#define NDIS_DbgPrint(_t_, _x_)
struct _LOGICAL_ADAPTER * PLOGICAL_ADAPTER
struct _MINIPORT_BUGCHECK_CONTEXT * PMINIPORT_BUGCHECK_CONTEXT
#define GET_MINIPORT_DRIVER(Handle)
#define GET_LOGICAL_ADAPTER(Handle)
LIST_ENTRY ProtocolListHead
NTSTATUS NTAPI NdisIPnPCancelStopDevice(IN PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID NTAPI ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protocol)
struct _NDIS_REQUEST_MAC_BLOCK * PNDIS_REQUEST_MAC_BLOCK
struct _ADAPTER_BINDING * PADAPTER_BINDING
NDIS_STATUS ProIndicatePacket(PLOGICAL_ADAPTER Adapter, PNDIS_PACKET Packet)
NTSTATUS NTAPI NdisIPnPQueryStopDevice(IN PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID NTAPI ProSendPackets(IN NDIS_HANDLE NdisBindingHandle, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets)
VOID EXPORT NdisGetFirstBufferFromPacket(IN PNDIS_PACKET _Packet, OUT PNDIS_BUFFER *_FirstBuffer, OUT PVOID *_FirstBufferVA, OUT PUINT _FirstBufferLength, OUT PUINT _TotalBufferLength)
VOID EXPORT NdisCloseConfiguration(IN NDIS_HANDLE ConfigurationHandle)
VOID EXPORT NdisReadConfiguration(OUT PNDIS_STATUS Status, OUT PNDIS_CONFIGURATION_PARAMETER *ParameterValue, IN NDIS_HANDLE ConfigurationHandle, IN PNDIS_STRING Keyword, IN NDIS_PARAMETER_TYPE ParameterType)
VOID EXPORT NdisOpenConfiguration(OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE ConfigurationHandle, IN NDIS_HANDLE WrapperConfigurationContext)
VOID EXPORT NdisInitUnicodeString(IN OUT PNDIS_STRING DestinationString, IN PCWSTR SourceString)
VOID NTAPI EthFilterDprIndicateReceiveComplete(IN PETH_FILTER Filter)
struct ETHI_FILTER * PETHI_FILTER
BOOLEAN NTAPI EthCreateFilter(IN UINT MaximumMulticastAddresses, IN PUCHAR AdapterAddress, OUT PETH_FILTER *Filter)
VOID NTAPI EthFilterDprIndicateReceive(IN PETH_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PCHAR Address, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookaheadBuffer, IN UINT LookaheadBufferSize, IN UINT PacketSize)
#define ETH_LENGTH_OF_ADDRESS
VOID NTAPI EthDeleteFilter(IN PETH_FILTER Filter)
UNICODE_STRING * PUNICODE_STRING
#define IsListEmpty(ListHead)
#define KeRaiseIrql(irql, oldIrql)
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define RtlCompareMemory(s1, s2, l)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeReleaseSpinLock(sl, irql)
#define KeLowerIrql(oldIrql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeAcquireSpinLock(sl, irql)
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
#define ExAllocatePool(type, size)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
enum _INTERFACE_TYPE INTERFACE_TYPE
static ULONG ResourceCount
NTSYSAPI void WINAPI DbgBreakPoint(void)
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
PLIST_ENTRY NTAPI ExInterlockedInsertTailList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
VOID NTAPI IoFreeWorkItem(IN PIO_WORKITEM IoWorkItem)
PIO_WORKITEM NTAPI IoAllocateWorkItem(IN PDEVICE_OBJECT DeviceObject)
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
struct _NDIS_PACKET * PNDIS_PACKET
_Out_ PNDIS_HANDLE _In_ PNDIS_PROTOCOL_CHARACTERISTICS _In_ UINT CharacteristicsLength
#define NdisMSetInformationComplete(MiniportAdapterHandle, Status)
#define NDIS_STATUS_BAD_VERSION
_Must_inspect_result_ _In_ NDIS_HANDLE NdisBindingHandle
#define NDIS_STATUS_PENDING
#define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER
struct _NDIS_LOG * PNDIS_LOG
_In_ NDIS_HANDLE _In_ PNDIS_PACKET Packet
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT * FunctionalDeviceObject
_In_ PNDIS_STRING _In_ PNDIS_STRING _Out_ PDEVICE_OBJECT * pDeviceObject
#define NdisMIndicateStatusComplete(MiniportAdapterHandle)
struct _NDIS50_MINIPORT_CHARACTERISTICS NDIS50_MINIPORT_CHARACTERISTICS
_In_ PVOID _In_ PVOID SystemSpecific2
#define NdisMQueryInformationComplete(MiniportAdapterHandle, Status)
#define NDIS_STATUS_RESET_START
_In_ PDRIVER_UNLOAD UnloadHandler
_In_opt_ NDIS_HANDLE _In_ NDIS_STATUS _In_ PVOID _In_ UINT StatusBufferSize
#define NdisMSetAttributes(MiniportAdapterHandle, MiniportAdapterContext, BusMaster, AdapterType)
#define NDIS_STATUS_BAD_CHARACTERISTICS
static __inline VOID NdisQueryPacket(IN PNDIS_PACKET Packet, OUT PUINT PhysicalBufferCount OPTIONAL, OUT PUINT BufferCount OPTIONAL, OUT PNDIS_BUFFER *FirstBuffer OPTIONAL, OUT PUINT TotalPacketLength OPTIONAL)
#define NDIS_ATTRIBUTE_BUS_MASTER
#define NdisMSendResourcesAvailable(MiniportAdapterHandle)
#define NdisMResetComplete(MiniportAdapterHandle, Status, AddressingReset)
@ NdisWorkItemSendLoopback
@ NdisWorkItemReturnPackets
@ NdisWorkItemResetInProgress
@ NdisWorkItemMiniportCallback
@ NdisWorkItemResetRequested
_In_ UINT _Out_ PNDIS_HANDLE LogHandle
#define NDIS_GET_PACKET_HEADER_SIZE(_Packet)
struct _NDIS40_MINIPORT_CHARACTERISTICS NDIS40_MINIPORT_CHARACTERISTICS
struct _NDIS_MINIPORT_BLOCK * PNDIS_MINIPORT_BLOCK
enum _NDIS_INTERFACE_TYPE NDIS_INTERFACE_TYPE
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT * NextDeviceObject
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PCM_RESOURCE_LIST * AllocatedResources
_In_opt_ PVOID SystemSpecific
#define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType)
#define NDIS_STATUS_FAILURE
#define NdisMTransferDataComplete(MiniportAdapterHandle, Packet, Status, BytesTransferred)
_In_ PPNDIS_PACKET _In_ UINT NumberOfPackets
_In_ NDIS_HANDLE _In_ PNET_PNP_EVENT NetPnPEvent
_In_ PPNDIS_PACKET PacketArray
VOID(NTAPI * ADAPTER_SHUTDOWN_HANDLER)(_In_ PVOID ShutdownContext)
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _Out_ PUINT SelectedMediumIndex
struct _NDIS51_MINIPORT_CHARACTERISTICS NDIS51_MINIPORT_CHARACTERISTICS
_In_ PNDIS_STRING _In_ PNDIS_STRING _Out_ PDEVICE_OBJECT _Out_ NDIS_HANDLE * NdisDeviceHandle
#define NDIS_STATUS_SUCCESS
#define NDIS_ATTRIBUTE_DESERIALIZE
struct _NDIS30_MINIPORT_CHARACTERISTICS NDIS30_MINIPORT_CHARACTERISTICS
@ ScatterGatherListPacketInfo
#define NDIS_GET_PACKET_STATUS(_Packet)
_In_ NDIS_HANDLE MiniportAdapterHandle
#define NdisQueryBuffer(_Buffer, _VirtualAddress, _Length)
#define NDIS_SET_PACKET_STATUS(_Packet, _Status)
#define NDIS_STATUS_UNSUPPORTED_MEDIA
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS OpenErrorStatus
enum _NDIS_WORK_ITEM_TYPE NDIS_WORK_ITEM_TYPE
#define NDIS_STATUS_RESET_END
_In_opt_ NDIS_HANDLE _In_ NDIS_STATUS _In_ PVOID StatusBuffer
struct _NDIS_REQUEST * PNDIS_REQUEST
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _Out_ PUINT _In_ UINT _In_ NDIS_HANDLE _In_ NDIS_HANDLE _In_ PNDIS_STRING AdapterName
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PCM_RESOURCE_LIST _Inout_opt_ PCM_RESOURCE_LIST * AllocatedResourcesTranslated
#define NdisMSendComplete(MiniportAdapterHandle, Packet, Status)
_In_opt_ NDIS_HANDLE _In_opt_ NDIS_HANDLE _Inout_ PNDIS_REQUEST NdisRequest
struct _NDIS_MINIPORT_WORK_ITEM * PNDIS_MINIPORT_WORK_ITEM
#define NdisMIndicateStatus(MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize)
_In_ PNDIS_STRING _In_ PNDIS_STRING SymbolicName
@ NdisRequestQueryInformation
@ NdisRequestSetInformation
#define NDIS_STATUS_RESOURCES
_In_opt_ NDIS_HANDLE _In_ NDIS_STATUS GeneralStatus
_In_ PVOID _In_ PVOID _In_ PVOID SystemSpecific3
#define ExInterlockedRemoveEntryList(_List, _Lock)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
NDIS_HANDLE EXPORT NdisIMGetDeviceContext(IN NDIS_HANDLE MiniportAdapterHandle)
VOID EXPORT NdisReturnPackets(IN PNDIS_PACKET *PacketsToReturn, IN UINT NumberOfPackets)
NDIS_STATUS MiniQueryInformation(PLOGICAL_ADAPTER Adapter, NDIS_OID Oid, ULONG Size, PVOID Buffer, PULONG BytesWritten)
NTSTATUS NTAPI NdisIForwardIrpAndWaitCompletionRoutine(PDEVICE_OBJECT Fdo, PIRP Irp, PVOID Context)
LIST_ENTRY AdapterListHead
BOOLEAN MiniCheckForHang(PLOGICAL_ADAPTER Adapter)
NDIS_HANDLE EXPORT NdisIMGetBindingContext(IN NDIS_HANDLE NdisBindingHandle)
VOID MiniWorkItemComplete(PLOGICAL_ADAPTER Adapter, NDIS_WORK_ITEM_TYPE WorkItemType)
VOID NTAPI MiniSendComplete(IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status)
NTSTATUS NTAPI NdisIShutdown(IN PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID EXPORT NdisMCloseLog(IN NDIS_HANDLE LogHandle)
NDIS_STATUS FASTCALL MiniDequeueWorkItem(PLOGICAL_ADAPTER Adapter, NDIS_WORK_ITEM_TYPE *WorkItemType, PVOID *WorkItemContext)
NDIS_STATUS MiniSetInformation(PLOGICAL_ADAPTER Adapter, NDIS_OID Oid, ULONG Size, PVOID Buffer, PULONG BytesRead)
VOID EXPORT NdisMFlushLog(IN NDIS_HANDLE LogHandle)
NDIS_STATUS MiniDoRequest(PLOGICAL_ADAPTER Adapter, PNDIS_REQUEST NdisRequest)
NDIS_STATUS DoQueries(PLOGICAL_ADAPTER Adapter, NDIS_OID AddressOID)
NDIS_STATUS EXPORT NdisMCreateLog(IN NDIS_HANDLE MiniportAdapterHandle, IN UINT Size, OUT PNDIS_HANDLE LogHandle)
PNDIS_MINIPORT_WORK_ITEM MiniGetFirstWorkItem(PLOGICAL_ADAPTER Adapter, NDIS_WORK_ITEM_TYPE Type)
VOID NTAPI NdisIBugcheckCallback(IN PVOID Buffer, IN ULONG Length)
VOID EXPORT NdisMDeregisterAdapterShutdownHandler(IN NDIS_HANDLE MiniportHandle)
NTSTATUS NTAPI NdisIDispatchPnp(IN PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID NTAPI MiniSendResourcesAvailable(IN NDIS_HANDLE MiniportAdapterHandle)
NDIS_STATUS EXPORT NdisMDeregisterDevice(IN NDIS_HANDLE NdisDeviceHandle)
VOID EXPORT NdisCancelSendPackets(IN NDIS_HANDLE NdisBindingHandle, IN PVOID CancelId)
VOID NTAPI MiniResetComplete(IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS Status, IN BOOLEAN AddressingReset)
VOID NTAPI MiniStatus(IN NDIS_HANDLE MiniportHandle, IN NDIS_STATUS GeneralStatus, IN PVOID StatusBuffer, IN UINT StatusBufferSize)
NDIS_STATUS EXPORT NdisMWriteLogData(IN NDIS_HANDLE LogHandle, IN PVOID LogBuffer, IN UINT LogBufferSize)
NDIS_STATUS EXPORT NdisMRegisterDevice(IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_STRING DeviceName, IN PNDIS_STRING SymbolicName, IN PDRIVER_DISPATCH MajorFunctions[], OUT PDEVICE_OBJECT *pDeviceObject, OUT NDIS_HANDLE *NdisDeviceHandle)
NTSTATUS NTAPI NdisICreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID EXPORT NdisInitializeWrapper(OUT PNDIS_HANDLE NdisWrapperHandle, IN PVOID SystemSpecific1, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3)
VOID EXPORT NdisMSetAttributesEx(IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE MiniportAdapterContext, IN UINT CheckForHangTimeInSeconds OPTIONAL, IN ULONG AttributeFlags, IN NDIS_INTERFACE_TYPE AdapterType)
VOID EXPORT NdisMRegisterUnloadHandler(IN NDIS_HANDLE NdisWrapperHandle, IN PDRIVER_UNLOAD UnloadHandler)
NDIS_STATUS MiniReset(PLOGICAL_ADAPTER Adapter)
NTSTATUS NTAPI NdisIForwardIrpAndWait(PLOGICAL_ADAPTER Adapter, PIRP Irp)
VOID EXPORT NdisRegisterAdapterShutdownHandler(IN NDIS_HANDLE NdisAdapterHandle, IN PVOID ShutdownContext, IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler)
NTSTATUS NTAPI NdisIDeviceIoControl(IN PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID EXPORT NdisMRegisterAdapterShutdownHandler(IN NDIS_HANDLE MiniportHandle, IN PVOID ShutdownContext, IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler)
VOID EXPORT NdisMGetDeviceProperty(IN NDIS_HANDLE MiniportAdapterHandle, IN OUT PDEVICE_OBJECT *PhysicalDeviceObject OPTIONAL, IN OUT PDEVICE_OBJECT *FunctionalDeviceObject OPTIONAL, IN OUT PDEVICE_OBJECT *NextDeviceObject OPTIONAL, IN OUT PCM_RESOURCE_LIST *AllocatedResources OPTIONAL, IN OUT PCM_RESOURCE_LIST *AllocatedResourcesTranslated OPTIONAL)
NDIS_STATUS EXPORT NdisQueryAdapterInstanceName(OUT PNDIS_STRING AdapterInstanceName, IN NDIS_HANDLE NdisBindingHandle)
VOID EXPORT NdisMSleep(IN ULONG MicrosecondsToSleep)
VOID NTAPI MiniportWorker(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
VOID NTAPI MiniStatusComplete(IN NDIS_HANDLE MiniportAdapterHandle)
VOID EXPORT NdisCompletePnPEvent(IN NDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, IN PNET_PNP_EVENT NetPnPEvent)
NTSTATUS NTAPI NdisGenericIrpHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
LIST_ENTRY MiniportListHead
VOID NTAPI MiniTransferDataComplete(IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status, IN UINT BytesTransferred)
KSPIN_LOCK AdapterListLock
VOID NTAPI MiniIndicateReceivePacket(IN NDIS_HANDLE MiniportAdapterHandle, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets)
BOOLEAN MiniAdapterHasAddress(PLOGICAL_ADAPTER Adapter, PNDIS_PACKET Packet)
static NDIS_MEDIUM MediaArray[MEDIA_ARRAY_SIZE]
VOID FASTCALL MiniQueueWorkItem(PLOGICAL_ADAPTER Adapter, NDIS_WORK_ITEM_TYPE WorkItemType, PVOID WorkItemContext, BOOLEAN Top)
PLOGICAL_ADAPTER MiniLocateDevice(PNDIS_STRING AdapterName)
BOOLEAN EXPORT NdisMSynchronizeWithInterrupt(IN PNDIS_MINIPORT_INTERRUPT Interrupt, IN PVOID SynchronizeFunction, IN PVOID SynchronizeContext)
KSPIN_LOCK MiniportListLock
NDIS_STATUS EXPORT NdisMRegisterMiniport(IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, IN UINT CharacteristicsLength)
NTSTATUS NTAPI NdisIPower(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI NdisIPnPStartDevice(IN PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS NTAPI NdisIAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
NTSTATUS NTAPI NdisIPnPStopDevice(IN PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID EXPORT NdisTerminateWrapper(IN NDIS_HANDLE NdisWrapperHandle, IN PVOID SystemSpecific)
VOID NTAPI MiniportHangDpc(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
BOOLEAN MiniIsBusy(PLOGICAL_ADAPTER Adapter, NDIS_WORK_ITEM_TYPE Type)
NDIS_STATUS EXPORT NdisMQueryAdapterInstanceName(OUT PNDIS_STRING AdapterInstanceName, IN NDIS_HANDLE MiniportAdapterHandle)
VOID MiniIndicateData(PLOGICAL_ADAPTER Adapter, NDIS_HANDLE MacReceiveContext, PVOID HeaderBuffer, UINT HeaderBufferSize, PVOID LookaheadBuffer, UINT LookaheadBufferSize, UINT PacketSize)
VOID MiniDoAddressingReset(PLOGICAL_ADAPTER Adapter)
VOID EXPORT NdisDeregisterAdapterShutdownHandler(IN NDIS_HANDLE NdisAdapterHandle)
VOID NTAPI MiniRequestComplete(IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS Status)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define RTL_REGISTRY_CONTROL
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RTL_QUERY_REGISTRY_REQUIRED
#define RTL_QUERY_REGISTRY_DIRECT
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define Int32x32To64(a, b)
struct _SINGLE_LIST_ENTRY * PSINGLE_LIST_ENTRY
enum _NDIS_MEDIUM NDIS_MEDIUM
#define IOCTL_NDIS_QUERY_GLOBAL_STATS
#define OID_802_3_MAXIMUM_LIST_SIZE
#define OID_802_3_CURRENT_ADDRESS
#define OID_GEN_MAXIMUM_LOOKAHEAD
#define OID_GEN_CURRENT_LOOKAHEAD
#define OID_GEN_MAC_OPTIONS
#define OID_GEN_MAXIMUM_SEND_PACKETS
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IoSkipCurrentIrpStackLocation(Irp)
#define IoCopyCurrentIrpStackLocationToNext(Irp)
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
NTSTATUS NTAPI IoRegisterShutdownNotification(PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoUnregisterShutdownNotification(PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoRegisterDeviceInterface(IN PDEVICE_OBJECT PhysicalDeviceObject, IN CONST GUID *InterfaceClassGuid, IN PUNICODE_STRING ReferenceString OPTIONAL, OUT PUNICODE_STRING SymbolicLinkName)
NTSTATUS NTAPI IoSetDeviceInterfaceState(IN PUNICODE_STRING SymbolicLinkName, IN BOOLEAN Enable)
PVOID NTAPI IoGetDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress)
NTSTATUS NTAPI IoAllocateDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress, IN ULONG DriverObjectExtensionSize, OUT PVOID *DriverObjectExtension)
#define IoCompleteRequest
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
NTSTATUS NTAPI IoDeleteSymbolicLink(IN PUNICODE_STRING SymbolicLinkName)
BOOLEAN NTAPI KeSynchronizeExecution(IN OUT PKINTERRUPT Interrupt, IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, IN PVOID SynchronizeContext OPTIONAL)
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
#define STATUS_NOT_SUPPORTED
NTSTATUS NTAPI IoOpenDeviceRegistryKey(IN PDEVICE_OBJECT DeviceObject, IN ULONG DevInstKeyType, IN ACCESS_MASK DesiredAccess, OUT PHANDLE DevInstRegKey)
NTSTATUS NTAPI IoGetDeviceProperty(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
#define FILE_DEVICE_PHYSICAL_NETCARD
#define FILE_DEVICE_NETWORK
#define IRP_MJ_DEVICE_CONTROL
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
#define KeAcquireSpinLockAtDpcLevel(SpinLock)
#define KeReleaseSpinLockFromDpcLevel(SpinLock)
#define STATUS_MORE_PROCESSING_REQUIRED
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
PULONG MinorVersion OPTIONAL
NDIS_OPEN_BLOCK NdisOpenBlock
PPROTOCOL_BINDING ProtocolBinding
PDRIVER_ADD_DEVICE AddDevice
PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1]
PDRIVER_EXTENSION DriverExtension
PDRIVER_UNLOAD DriverUnload
union _HARDWARE_ADDRESS::@1013 Type
UCHAR Medium802_3[ETH_LENGTH_OF_ADDRESS]
struct _LIST_ENTRY * Flink
PNDIS_MINIPORT_WORK_ITEM WorkQueueTail
PMINIPORT_BUGCHECK_CONTEXT BugcheckContext
LIST_ENTRY ProtocolListHead
PNDIS_MINIPORT_WORK_ITEM WorkQueueHead
NDIS_MINIPORT_BLOCK NdisMiniportBlock
LIST_ENTRY MiniportListEntry
PKBUGCHECK_CALLBACK_RECORD CallbackRecord
ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
STATUS_COMPLETE_HANDLER StatusCompleteHandler
TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler
PNP_EVENT_HANDLER PnPEventHandler
SEND_COMPLETE_HANDLER SendCompleteHandler
RECEIVE_HANDLER ReceiveHandler
RESET_COMPLETE_HANDLER ResetCompleteHandler
RECEIVE_PACKET_HANDLER ReceivePacketHandler
STATUS_HANDLER StatusHandler
PNDIS_MINIPORT_BLOCK Miniport
PCM_RESOURCE_LIST Resources
NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler
NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler
ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler
PNDIS_REQUEST PendingRequest
NDIS_M_STATUS_HANDLER StatusHandler
NDIS_HANDLE DeviceContext
ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler
W_SEND_PACKETS_HANDLER SendPacketsHandler
NDIS_HANDLE MiniportAdapterContext
PDEVICE_OBJECT NextDeviceObject
NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler
PDEVICE_OBJECT DeviceObject
NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler
UNICODE_STRING SymbolicLinkName
PDEVICE_OBJECT PhysicalDeviceObject
ULONG CheckForHangSeconds
NDIS_INTERFACE_TYPE AdapterType
NDIS_INTERFACE_TYPE BusType
NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler
PNDIS_PACKET FirstPendingPacket
PNDIS_MINIPORT_INTERRUPT Interrupt
PNDIS_MINIPORT_TIMER TimerQueue
NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler
UNICODE_STRING MiniportName
PNDIS_M_DRIVER_BLOCK DriverHandle
FILTERDBS_S FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler
NDIS_TIMER WakeUpDpcTimer
NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler
NDIS_WORK_ITEM_TYPE WorkItemType
PDEVICE_OBJECT DeviceObject
PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1]
PNDIS_STRING SymbolicName
NDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
PUNICODE_STRING RegistryPath
PDRIVER_OBJECT DriverObject
UCHAR WrapperReserved[2 *sizeof(PVOID)]
NDIS_PROTOCOL_CHARACTERISTICS Chars
struct _SINGLE_LIST_ENTRY * Next
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
BOOLEAN NTAPI KeSetTimerEx(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN LONG Period, IN PKDPC Dpc OPTIONAL)
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
#define PLUGPLAY_REGKEY_DRIVER
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFDEVICE Fdo
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_Must_inspect_result_ _In_ WDFCMRESLIST List
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_In_ WDFTIMER _In_ LONGLONG DueTime
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ PWDF_MEMORY_DESCRIPTOR _Out_opt_ PULONG BytesTransferred
_IRQL_requires_same_ typedef _In_ ULONG ControlCode
#define IRP_MN_CANCEL_STOP_DEVICE
struct _DRIVER_OBJECT * PDRIVER_OBJECT
#define IRP_MN_QUERY_PNP_DEVICE_STATE
struct _SCATTER_GATHER_LIST * PSCATTER_GATHER_LIST
_In_opt_ PVOID _In_ PIO_WORKITEM IoWorkItem
#define IRP_MN_START_DEVICE
DRIVER_UNLOAD * PDRIVER_UNLOAD
@ DevicePropertyDriverKeyName
@ DevicePropertyBusNumber
@ DevicePropertyLegacyBusType
DRIVER_DISPATCH * PDRIVER_DISPATCH
#define IRP_MN_QUERY_STOP_DEVICE
#define IRP_MN_CANCEL_REMOVE_DEVICE