20#define CCS_ROOT L"\\Registry\\Machine\\SYSTEM\\CurrentControlSet"
21#define TCPIP_GUID L"{4D36E972-E325-11CE-BFC1-08002BE10318}"
66 Request.DATA.SET_INFORMATION.InformationBufferLength =
Length;
70 Request.DATA.QUERY_INFORMATION.InformationBufferLength =
Length;
96 ULONG HeaderBufferSize,
101 if (HeaderBufferSize < Adapter->HeaderSize)
107 switch (Adapter->
Media)
116 *PacketType = EthHeader->EType;
194 }
else switch( Oid ) {
322 LegacyReceive =
WorkItem->LegacyReceive;
352 IPPacket.
Free(&IPPacket);
365 (
"Ether Type = %x Total = %d\n",
372 switch (PacketType) {
383 IPPacket.
Free(&IPPacket);
466 UINT HeaderBufferSize,
467 PVOID LookaheadBuffer,
468 UINT LookaheadBufferSize,
498 if (HeaderBufferSize < Adapter->HeaderSize) {
511 Adapter, Adapter->
MTU));
520 PC(NdisPacket)->PacketType = PacketType;
573 ULONG KeyValueInfoLength;
590 TcpipRegistryPath.
Length = 0;
623 Status = ZwQueryValueKey(ParameterHandle,
635 Status = ZwQueryValueKey(ParameterHandle,
656 Status = ZwQueryValueKey(ParameterHandle,
685 Status = ZwQueryValueKey(ParameterHandle,
727 !
Context->Adapter->CompletingReset)
737 else if (!
Context->Adapter->CompletingReset)
772 sizeof(Adapter->
MTU));
840 DbgPrint(
"NDIS_STATUS_MEDIA_CONNECT\n");
852 DbgPrint(
"NDIS_STATUS_MEDIA_DISCONNECT\n");
904 DbgPrint(
"Device transitioned to power state %ld\n", PnPEvent->
Buffer);
908 DbgPrint(
"Device wants to go into power state %ld\n", PnPEvent->
Buffer);
912 DbgPrint(
"Device is about to be removed\n");
916 DbgPrint(
"Device removal cancelled\n");
973 (
"Called( NdisPacket %x, Offset %d, Adapter %x )\n",
974 NdisPacket,
Offset, Adapter));
982 (
"Adapter Address [%02x %02x %02x %02x %02x %02x]\n",
990 GetDataPtr( NdisPacket, 0, &OldData, &OldSize );
1004 switch (Adapter->
Media) {
1043 (
"Link Address [%02x %02x %02x %02x %02x %02x]\n",
1044 ((
PCHAR)LinkAddress)[0] & 0xff,
1045 ((
PCHAR)LinkAddress)[1] & 0xff,
1046 ((
PCHAR)LinkAddress)[2] & 0xff,
1047 ((
PCHAR)LinkAddress)[3] & 0xff,
1048 ((
PCHAR)LinkAddress)[4] & 0xff,
1049 ((
PCHAR)LinkAddress)[5] & 0xff));
1066 "Pending" :
"Complete"));
1155 new_string[ResultFirst->
Length /
sizeof(
WCHAR)] = 0;
1206 if( LinkageKey )
ZwClose( LinkageKey );
1207 if( DescKey )
ZwClose( DescKey );
1271 ( &EnumKeyName, &TargetKeyName,
Name, DeviceDesc );
1290 PartialRegistryKey.
Buffer =
1294 while( *
Ptr !=
L'\\' &&
1385 sizeof(MediaState));
1502 switch (IF->
Media) {
1632 NextEntry = CurrentEntry->
Flink;
1636 CurrentEntry = NextEntry;
#define AddrInitIPv4(IPAddress, RawAddress)
BOOLEAN AddrIsUnspecified(PIP_ADDRESS Address)
VOID ARPReceive(PVOID Context, PIP_PACKET Packet)
UINT CopyPacketToBuffer(PUCHAR DstData, PNDIS_PACKET SrcPacket, UINT SrcOffset, UINT Length)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
static void cleanup(void)
static const WCHAR BackSlash[]
struct _ETH_HEADER * PETH_HEADER
VOID EXPORT NdisOpenAdapter(OUT PNDIS_STATUS Status, OUT PNDIS_STATUS OpenErrorStatus, OUT PNDIS_HANDLE NdisBindingHandle, OUT PUINT SelectedMediumIndex, IN PNDIS_MEDIUM MediumArray, IN UINT MediumArraySize, IN NDIS_HANDLE NdisProtocolHandle, IN NDIS_HANDLE ProtocolBindingContext, IN PNDIS_STRING AdapterName, IN UINT OpenOptions, IN PSTRING AddressingInformation OPTIONAL)
VOID EXPORT NdisDeregisterProtocol(OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisProtocolHandle)
VOID EXPORT NdisSend(OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_PACKET Packet)
VOID EXPORT NdisCloseAdapter(OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle)
VOID EXPORT NdisTransferData(OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE MacReceiveContext, IN UINT ByteOffset, IN UINT BytesToTransfer, IN OUT PNDIS_PACKET Packet, OUT PUINT BytesTransferred)
VOID EXPORT NdisRegisterProtocol(OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE NdisProtocolHandle, IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics, IN UINT CharacteristicsLength)
#define TI_DbgPrint(_t_, _x_)
VOID IPAddInterfaceRoute(PIP_INTERFACE IF)
#define IP_DEFAULT_LINK_SPEED
VOID IPDestroyInterface(PIP_INTERFACE IF)
VOID IPUnregisterInterface(PIP_INTERFACE IF)
BOOLEAN IPRegisterInterface(PIP_INTERFACE IF)
PIP_INTERFACE IPCreateInterface(PLLIP_BIND_INFO BindInfo)
PIP_PACKET IPInitializePacket(PIP_PACKET IPPacket, ULONG Type)
VOID TcpipReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL Irql)
VOID TcpipAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL Irql)
#define IEEE_802_ADDR_LENGTH
#define RemoveEntryList(Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeSetEvent(pEvt, foo, foo2)
#define KeGetCurrentIrql()
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLenum GLuint GLenum GLsizei const GLchar * buf
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
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
#define RtlFillMemory(Dest, Length, Fill)
VOID TCPUpdateInterfaceIPInformation(PIP_INTERFACE IF)
VOID TCPUpdateInterfaceLinkStatus(PIP_INTERFACE IF)
PLIST_ENTRY NTAPI ExInterlockedInsertTailList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
#define NDIS_VERSION_MAJOR
void GetDataPtr(PNDIS_PACKET Packet, UINT Offset, PCHAR *DataOut, PUINT Size)
#define LAN_STATE_OPENING
#define LAN_STATE_STOPPED
#define NDIS_VERSION_MINOR
#define LAN_STATE_STARTED
struct LAN_ADAPTER * PLAN_ADAPTER
#define LAN_STATE_RESETTING
VOID NTAPI ProtocolCloseAdapterComplete(NDIS_HANDLE BindingContext, NDIS_STATUS Status)
Called by NDIS to complete closing an adapter.
VOID BindAdapter(PLAN_ADAPTER Adapter, PNDIS_STRING RegistryPath)
Binds a LAN adapter to IP layer.
VOID NTAPI ProtocolStatusComplete(NDIS_HANDLE NdisBindingContext)
Called by NDIS when a status-change has occurred.
VOID NTAPI ProtocolRequestComplete(NDIS_HANDLE BindingContext, PNDIS_REQUEST NdisRequest, NDIS_STATUS Status)
Called by NDIS to complete a request.
VOID NTAPI ProtocolReceiveComplete(NDIS_HANDLE BindingContext)
Called by NDIS when we're done receiving data.
VOID NTAPI ProtocolOpenAdapterComplete(NDIS_HANDLE BindingContext, NDIS_STATUS Status, NDIS_STATUS OpenErrorStatus)
Called by NDIS to complete opening of an adapter.
NDIS_STATUS NTAPI ProtocolReceive(NDIS_HANDLE BindingContext, NDIS_HANDLE MacReceiveContext, PVOID HeaderBuffer, UINT HeaderBufferSize, PVOID LookaheadBuffer, UINT LookaheadBufferSize, UINT PacketSize)
Called by NDIS when a packet has been received on the physical link.
VOID NTAPI ProtocolTransferDataComplete(NDIS_HANDLE BindingContext, PNDIS_PACKET Packet, NDIS_STATUS Status, UINT BytesTransferred)
Called by NDIS to complete reception of data.
VOID LANTransmit(PLAN_ADAPTER Adapter, PNDIS_PACKET NdisPacket, PVOID LinkAddress, USHORT Type)
Transmits a packet ARGUMENTS:
VOID LANUnregisterProtocol(VOID)
Unregisters this protocol driver with NDIS.
VOID NTAPI ProtocolResetComplete(NDIS_HANDLE BindingContext, NDIS_STATUS Status)
Called by NDIS to complete resetting an adapter.
NDIS_STATUS LANRegisterAdapter(PNDIS_STRING AdapterName, PNDIS_STRING RegistryPath)
Registers protocol with an NDIS adapter.
VOID NTAPI ProtocolStatus(NDIS_HANDLE BindingContext, NDIS_STATUS GenerelStatus, PVOID StatusBuffer, UINT StatusBufferSize)
Called by NDIS when the underlying driver has changed state.
VOID NTAPI ProtocolBindAdapter(OUT PNDIS_STATUS Status, IN NDIS_HANDLE BindContext, IN PNDIS_STRING DeviceName, IN PVOID SystemSpecific1, IN PVOID SystemSpecific2)
Called by NDIS during NdisRegisterProtocol to set up initial bindings, and periodically thereafter as...
NDIS_STATUS LANUnregisterAdapter(PLAN_ADAPTER Adapter)
Unregisters protocol with NDIS adapter.
VOID FreeAdapter(PLAN_ADAPTER Adapter)
Frees memory for a LAN_ADAPTER structure.
NTSTATUS LANRegisterProtocol(PNDIS_STRING Name)
Registers this protocol driver with NDIS.
VOID NTAPI ProtocolSendComplete(NDIS_HANDLE BindingContext, PNDIS_PACKET Packet, NDIS_STATUS Status)
Called by NDIS to complete sending process.
NDIS_STATUS NDISCall(PLAN_ADAPTER Adapter, NDIS_REQUEST_TYPE Type, NDIS_OID OID, PVOID Buffer, UINT Length)
Send a request to NDIS.
static LONG WINAPI EnumKey(HANDLE hcKey, DWORD dwIndex, LPWSTR pszName, PDWORD pcchName, PFILETIME pftLastWriteTime, HANDLE hSpooler)
#define AllocatePacketWithBuffer(x, y, z)
#define FreeNdisPacket(x)
#define memcpy(s1, s2, n)
#define ExFreePoolWithTag(_P, _T)
#define InitializeObjectAttributes(p, n, a, r, s)
#define NDIS_STATUS_PENDING
_In_ NDIS_HANDLE _In_ PNDIS_PACKET Packet
#define NDIS_STATUS_MEDIA_CONNECT
#define NdisQueryPacketLength(_Packet, _TotalPacketLength)
_In_ PVOID _In_ PVOID SystemSpecific2
#define NDIS_STATUS_RESET_START
_In_opt_ NDIS_HANDLE _In_ NDIS_STATUS _In_ PVOID _In_ UINT StatusBufferSize
#define NDIS_STATUS_NOT_SUPPORTED
#define NDIS_STATUS_MEDIA_DISCONNECT
#define NdisCopyLookaheadData(Destination, Source, Length, MacOptions)
#define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET _In_ UINT _Out_ PUINT BytesCopied
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _Out_ PUINT _In_ UINT _In_ NDIS_HANDLE _In_ NDIS_HANDLE ProtocolBindingContext
#define NDIS_PACKET_TYPE_BROADCAST
#define NDIS_STATUS_SUCCESS
enum _NDIS_REQUEST_TYPE NDIS_REQUEST_TYPE
#define NDIS_PACKET_TYPE_MULTICAST
#define NDIS_STATUS_NOT_ACCEPTED
#define NDIS_PACKET_TYPE_DIRECTED
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS OpenErrorStatus
#define NDIS_STATUS_RESET_END
_In_opt_ NDIS_HANDLE _In_ NDIS_STATUS _In_ PVOID StatusBuffer
_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
_In_opt_ NDIS_HANDLE _In_opt_ NDIS_HANDLE _Inout_ PNDIS_REQUEST NdisRequest
_In_ NDIS_STATUS _In_ NDIS_STATUS OpenStatus
@ NdisRequestQueryInformation
@ NdisRequestSetInformation
#define NDIS_STATUS_RESOURCES
_In_opt_ NDIS_HANDLE _In_ NDIS_STATUS GeneralStatus
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
VOID NBDestroyNeighborsForInterface(PIP_INTERFACE Interface)
@ NetEventQueryRemoveDevice
@ NetEventCancelRemoveDevice
static NDIS_MEDIUM MediaArray[MEDIA_ARRAY_SIZE]
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlFreeAnsiString(PANSI_STRING AnsiString)
@ KeyValuePartialInformation
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
struct _KEY_BASIC_INFORMATION KEY_BASIC_INFORMATION
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
struct _KEY_VALUE_PARTIAL_INFORMATION * PKEY_VALUE_PARTIAL_INFORMATION
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
enum _NDIS_MEDIUM NDIS_MEDIUM
#define OID_GEN_MAXIMUM_TOTAL_SIZE
#define OID_GEN_LINK_SPEED
#define OID_GEN_CURRENT_PACKET_FILTER
@ NdisMediaStateConnected
#define OID_802_3_CURRENT_ADDRESS
enum _NDIS_MEDIA_STATE NDIS_MEDIA_STATE
#define OID_GEN_MAXIMUM_FRAME_SIZE
#define OID_GEN_MEDIA_CONNECT_STATUS
@ NdisHardwareStatusReady
#define OID_GEN_CURRENT_LOOKAHEAD
#define OID_GEN_MAXIMUM_SEND_PACKETS
#define OID_GEN_HARDWARE_STATUS
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID IPReceive(PIP_INTERFACE IF, PIP_PACKET IPPacket)
VOID RouterRemoveRoutesForInterface(PIP_INTERFACE Interface)
PFIB_ENTRY RouterCreateRoute(PIP_ADDRESS NetworkAddress, PIP_ADDRESS Netmask, PIP_ADDRESS RouterAddress, PIP_INTERFACE Interface, UINT Metric)
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
UCHAR HWAddress[IEEE_802_ADDR_LENGTH]
UNICODE_STRING Description
struct _LIST_ENTRY * Flink
LL_TRANSMIT_ROUTINE Transmit
STATUS_COMPLETE_HANDLER StatusCompleteHandler
TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler
RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler
PNP_EVENT_HANDLER PnPEventHandler
REQUEST_COMPLETE_HANDLER RequestCompleteHandler
SEND_COMPLETE_HANDLER SendCompleteHandler
RECEIVE_HANDLER ReceiveHandler
BIND_HANDLER BindAdapterHandler
RESET_COMPLETE_HANDLER ResetCompleteHandler
RECEIVE_PACKET_HANDLER ReceivePacketHandler
STATUS_HANDLER StatusHandler
UNBIND_HANDLER UnbindAdapterHandler
OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler
CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler
UNLOAD_PROTOCOL_HANDLER UnloadHandler
NET_PNP_EVENT_CODE NetEvent
static NTSTATUS CheckForDeviceDesc(PUNICODE_STRING EnumKeyName, PUNICODE_STRING TargetKeyName, PUNICODE_STRING Name, PUNICODE_STRING DeviceDesc)
LIST_ENTRY AdapterListHead
struct _LAN_WQ_ITEM LAN_WQ_ITEM
struct _RECONFIGURE_CONTEXT * PRECONFIGURE_CONTEXT
struct _RECONFIGURE_CONTEXT RECONFIGURE_CONTEXT
NTSTATUS TcpipLanGetDwordOid(PIP_INTERFACE Interface, NDIS_OID Oid, PULONG Result)
NDIS_STATUS NTAPI ProtocolPnPEvent(NDIS_HANDLE NdisBindingContext, PNET_PNP_EVENT PnPEvent)
static NTSTATUS FindDeviceDescForAdapter(PUNICODE_STRING Name, PUNICODE_STRING DeviceDesc)
NDIS_STATUS GetPacketTypeFromNdisPacket(PLAN_ADAPTER Adapter, PNDIS_PACKET NdisPacket, PULONG PacketType)
NTSTATUS NTAPI AppendUnicodeString(PUNICODE_STRING ResultFirst, PUNICODE_STRING Second, BOOLEAN Deallocate)
static NTSTATUS OpenRegistryKey(PNDIS_STRING RegistryPath, PHANDLE RegHandle)
VOID GetName(PUNICODE_STRING RegistryKey, PUNICODE_STRING OutName)
BOOLEAN ReconfigureAdapter(PRECONFIGURE_CONTEXT Context)
NDIS_HANDLE NdisProtocolHandle
VOID NTAPI ProtocolUnbindAdapter(PNDIS_STATUS Status, NDIS_HANDLE ProtocolBindingContext, NDIS_HANDLE UnbindContext)
BOOLEAN ReadIpConfiguration(PIP_INTERFACE Interface)
KSPIN_LOCK AdapterListLock
UINT TransferDataCompleteCalled
BOOLEAN ProtocolRegistered
VOID LanSubmitReceiveWork(NDIS_HANDLE BindingContext, PNDIS_PACKET Packet, UINT BytesTransferred, BOOLEAN LegacyReceive)
NDIS_STATUS GetPacketTypeFromHeaderBuffer(PLAN_ADAPTER Adapter, PVOID HeaderBuffer, ULONG HeaderBufferSize, PULONG PacketType)
VOID ReconfigureAdapterWorker(PVOID Context)
VOID LanReceiveWorker(PVOID Context)
INT NTAPI ProtocolReceivePacket(NDIS_HANDLE BindingContext, PNDIS_PACKET NdisPacket)
static NTSTATUS ReadStringFromRegistry(HANDLE RegHandle, PWCHAR RegistryValue, PUNICODE_STRING String)
struct _LAN_WQ_ITEM * PLAN_WQ_ITEM
VOID UnbindAdapter(PLAN_ADAPTER Adapter)
#define RTL_CONSTANT_STRING(s)
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
NTSTATUS TcpipWaitForSingleObject(PVOID Object, KWAIT_REASON Reason, KPROCESSOR_MODE WaitMode, BOOLEAN Alertable, PLARGE_INTEGER Timeout)
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
_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
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
_In_opt_ PETWENABLECALLBACK _In_opt_ PVOID _Out_ PREGHANDLE RegHandle
BOOLEAN ChewCreate(VOID(*Worker)(PVOID), PVOID WorkerContext)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_ __drv_aliasesMem PSTRING Prefix