33 for(
i = 0;
i <
Len;
i++ ) {
58 if (
FCB->DisconnectOptionsSize == 0)
69 FCB->DisconnectOptions,
89 if (!DisconnectOptions)
92 if (
FCB->DisconnectOptions)
96 FCB->DisconnectOptionsSize = 0;
97 FCB->FilledDisconnectOptions = 0;
101 DisconnectOptionsSize,
104 if (!
FCB->DisconnectOptions)
109 DisconnectOptionsSize);
111 FCB->DisconnectOptionsSize = DisconnectOptionsSize;
130 if (!DisconnectOptionsSize)
139 if (
FCB->DisconnectOptions)
142 FCB->DisconnectOptionsSize = 0;
143 FCB->FilledDisconnectOptions = 0;
147 *DisconnectOptionsSize,
152 FCB->DisconnectOptionsSize = *DisconnectOptionsSize;
169 if (
FCB->DisconnectDataSize == 0)
204 if (
FCB->DisconnectData)
208 FCB->DisconnectDataSize = 0;
209 FCB->FilledDisconnectData = 0;
216 if (!
FCB->DisconnectData)
223 FCB->DisconnectDataSize = DisconnectDataSize;
242 if (!DisconnectDataSize)
251 if (
FCB->DisconnectData)
254 FCB->DisconnectDataSize = 0;
255 FCB->FilledDisconnectData = 0;
262 if (!
FCB->DisconnectData)
265 FCB->DisconnectDataSize = *DisconnectDataSize;
324 Irp->IoStatus.Information = 0;
326 EaInfo =
Irp->AssociatedIrp.SystemBuffer;
335 EaInfo, EaInfoValue));
353 FCB->GroupID = ConnectInfo ? ConnectInfo->
GroupID : 0;
357 FCB->DeviceExt = DeviceExt;
376 FCB->TdiDeviceName.MaximumLength =
FCB->TdiDeviceName.Length;
378 FCB->TdiDeviceName.Length,
381 if( !
FCB->TdiDeviceName.Buffer ) {
391 FCB->TdiDeviceName.Length );
412 if (
FCB->TdiDeviceName.Buffer)
442 CurrentEntry =
FCB->PendingIrpList[
Function].Flink;
443 while (CurrentEntry != &
FCB->PendingIrpList[
Function])
445 NextEntry = CurrentEntry->
Flink;
451 CurrentEntry = NextEntry;
479 InFlightRequest[0] = &
FCB->ListenIrp;
480 InFlightRequest[1] = &
FCB->ReceiveIrp;
481 InFlightRequest[2] = &
FCB->SendIrp;
482 InFlightRequest[3] = &
FCB->ConnectIrp;
483 InFlightRequest[4] = &
FCB->DisconnectIrp;
487 if( InFlightRequest[
i]->InFlightRequest ) {
489 i, InFlightRequest[
i]->InFlightRequest));
518 if(
FCB->EventSelect )
524 if (
FCB->Recv.Window)
527 if (
FCB->Send.Window)
530 if (
FCB->AddressFrom)
533 if (
FCB->ConnectCallInfo)
536 if (
FCB->ConnectReturnInfo)
539 if (
FCB->ConnectData)
542 if (
FCB->DisconnectData)
545 if (
FCB->ConnectOptions)
548 if (
FCB->DisconnectOptions)
551 if (
FCB->LocalAddress)
554 if (
FCB->RemoteAddress)
557 if (
FCB->OnConnectSendBuffer)
560 if(
FCB->Connection.Object )
566 if(
FCB->AddressFile.Object )
573 DbgPrint(
"INVALID ADDRESS FILE HANDLE VALUE: %p %p\n",
FCB->AddressFile.Handle,
FCB->AddressFile.Object);
581 DbgPrint(
"INVALID CONNECTION HANDLE VALUE: %p %p\n",
FCB->Connection.Handle,
FCB->Connection.Object);
585 if (
FCB->TdiDeviceName.Buffer)
593 Irp->IoStatus.Information = 0;
619 FCB->DisconnectIrp.InFlightRequest =
NULL;
627 FCB->FilledDisconnectData =
MIN(
FCB->DisconnectDataSize,
FCB->ConnectReturnInfo->UserDataLength);
628 if (
FCB->FilledDisconnectData)
631 FCB->ConnectReturnInfo->UserData,
632 FCB->FilledDisconnectData);
635 FCB->FilledDisconnectOptions =
MIN(
FCB->DisconnectOptionsSize,
FCB->ConnectReturnInfo->OptionsLength);
636 if (
FCB->FilledDisconnectOptions)
639 FCB->ConnectReturnInfo->Options,
640 FCB->FilledDisconnectOptions);
668 return Irp->IoStatus.Status;
681 if (
FCB->DisconnectIrp.InFlightRequest)
686 FCB->ConnectCallInfo->UserData =
FCB->DisconnectData;
687 FCB->ConnectCallInfo->UserDataLength =
FCB->DisconnectDataSize;
688 FCB->ConnectCallInfo->Options =
FCB->DisconnectOptions;
689 FCB->ConnectCallInfo->OptionsLength =
FCB->DisconnectOptionsSize;
692 FCB->Connection.Object,
693 &
FCB->DisconnectTimeout,
694 FCB->DisconnectFlags,
697 FCB->ConnectCallInfo,
698 FCB->ConnectReturnInfo);
752 if (
FCB->ReceiveIrp.InFlightRequest)
756 FCB->Recv.Content = 0;
757 FCB->Recv.BytesUsed = 0;
763 FCB->PollState &= ~AFD_EVENT_RECEIVE;
781 if (!
FCB->ConnectCallInfo)
788 if (
FCB->DisconnectPending)
790 if (
FCB->DisconnectIrp.InFlightRequest)
793 ASSERT(!
FCB->DisconnectIrp.InFlightRequest);
814 FCB->PollState &= ~AFD_EVENT_SEND;
841 if (!
FCB->RemoteAddress)
852 FCB->PollState &= ~AFD_EVENT_SEND;
864 Buffer->Characteristics = 0;
886 Buffer =
Irp->AssociatedIrp.SystemBuffer;
923 Irp->IoStatus.Information = 0;
1062 DbgPrint(
"IOCTL_AFD_DEFER_ACCEPT is UNIMPLEMENTED!\n");
1066 DbgPrint(
"IOCTL_AFD_GET_PENDING_CONNECT_DATA is UNIMPLEMENTED!\n");
1070 DbgPrint(
"IOCTL_AFD_VALIDATE_GROUP is UNIMPLEMENTED!\n");
1087 (
"Irp: Unknown Major code was %x\n",
1183 PollReq =
Irp->AssociatedIrp.SystemBuffer;
1262 while (CurrentEntry != &DeviceExt->
Polls)
1275 CurrentEntry = CurrentEntry->
Flink;
1283 DbgPrint(
"WARNING!!! IRP cancellation race could lead to a process hang! (IOCTL_AFD_SELECT)\n");
1296 CurrentEntry =
FCB->PendingIrpList[
Function].Flink;
1297 while (CurrentEntry != &
FCB->PendingIrpList[
Function])
1301 if (CurrentIrp ==
Irp)
1315 Irp->Tail.Overlay.DriverContext[2] =
NULL;
1318 if (
Irp->Tail.Overlay.DriverContext[3])
1322 Irp->Tail.Overlay.DriverContext[3] =
NULL;
1330 CurrentEntry = CurrentEntry->
Flink;
1336 DbgPrint(
"WARNING!!! IRP cancellation race could lead to a process hang! (Function: %u)\n",
Function);
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define SOCKET_STATE_CLOSED
#define IN_FLIGHT_REQUESTS
#define SOCKET_STATE_CREATED
#define TAG_AFD_DISCONNECT_DATA
#define TAG_AFD_TDI_CONNECTION_INFORMATION
#define TAG_AFD_SUPER_CONNECT_BUFFER
#define TAG_AFD_DISCONNECT_OPTIONS
#define FUNCTION_PREACCEPT
#define TAG_AFD_ACCEPT_QUEUE
#define TAG_AFD_CONNECT_OPTIONS
#define TAG_AFD_SOCKET_CONTEXT
DRIVER_CANCEL AfdCancelHandler
#define TAG_AFD_CONNECT_DATA
#define FUNCTION_CONNECTEX
#define TAG_AFD_DATA_BUFFER
#define TAG_AFD_TRANSPORT_ADDRESS
#define FUNCTION_DISCONNECT
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
#define STATUS_INVALID_HANDLE
#define STATUS_NOT_SUPPORTED
#define STATUS_NOT_IMPLEMENTED
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
#define NT_SUCCESS(StatCode)
#define RTL_CONSTANT_STRING(s)
#define INVALID_HANDLE_VALUE
DRIVER_INITIALIZE DriverEntry
_In_ PIO_STACK_LOCATION IrpSp
NTSTATUS NTAPI AfdBindSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdSetConnectData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdSetConnectDataSize(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdStreamSocketConnect(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdStreamSocketSuperConnect(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdGetConnectOptions(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdGetConnectData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdSetConnectOptions(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdSetConnectOptionsSize(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdSetContext(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdGetContextSize(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdGetContext(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdSetInfo(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdGetSockName(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdGetInfo(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdGetPeerName(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS AfdAccept(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS AfdSuperAccept(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS AfdListenSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS AfdWaitForListen(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
PVOID LockRequest(PIRP Irp, PIO_STACK_LOCATION IrpSp, BOOLEAN Output, KPROCESSOR_MODE *LockMode)
VOID UnlockBuffers(PAFD_WSABUF Buf, UINT Count, BOOL Address)
VOID UnlockRequest(PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS QueueUserModeIrp(PAFD_FCB FCB, PIRP Irp, UINT Function)
NTSTATUS LostSocket(PIRP Irp)
NTSTATUS NTAPI UnlockAndMaybeComplete(PAFD_FCB FCB, NTSTATUS Status, PIRP Irp, UINT Information)
VOID SocketStateUnlock(PAFD_FCB FCB)
BOOLEAN SocketAcquireStateLock(PAFD_FCB FCB)
PVOID GetLockedData(PIRP Irp, PIO_STACK_LOCATION IrpSp)
VOID RetryDisconnectCompletion(PAFD_FCB FCB)
NTSTATUS NTAPI AfdSetDisconnectData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
static DRIVER_UNLOAD AfdUnload
static NTSTATUS NTAPI AfdQueryVolumeInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
BOOLEAN CheckUnlockExtraBuffers(PAFD_FCB FCB, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdSetDisconnectDataSize(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
static NTSTATUS NTAPI AfdGetTdiHandles(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
static NTSTATUS NTAPI AfdCreateSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
static NTSTATUS NTAPI AfdCleanupSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS AfdQueryFsDeviceInfo(PDEVICE_OBJECT DeviceObject, PFILE_FS_DEVICE_INFORMATION Buffer, PULONG Length)
void OskitDumpBuffer(PCHAR Data, UINT Len)
NTSTATUS NTAPI AfdSetDisconnectOptions(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
static NTSTATUS NTAPI AfdDisconnect(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
VOID CleanupPendingIrp(PAFD_FCB FCB, PIRP Irp, PIO_STACK_LOCATION IrpSp, PAFD_ACTIVE_POLL Poll)
static DRIVER_DISPATCH AfdDispatch
static IO_COMPLETION_ROUTINE DisconnectComplete
NTSTATUS NTAPI AfdSetDisconnectOptionsSize(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
static NTSTATUS NTAPI AfdCloseSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
ULONG AfdReceiveWindowSize
NTSTATUS NTAPI AfdGetDisconnectOptions(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdGetDisconnectData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
static NTSTATUS DoDisconnect(PAFD_FCB FCB)
NTSTATUS NTAPI AfdEnumEvents(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
VOID KillSelectsForFCB(PAFD_DEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN OnlyExclusive)
NTSTATUS NTAPI AfdSelect(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI AfdEventSelect(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
VOID ZeroEvents(PAFD_HANDLE HandleArray, UINT HandleCount)
VOID PollReeval(PAFD_DEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
VOID SignalSocket(PAFD_ACTIVE_POLL Poll OPTIONAL, PIRP _Irp OPTIONAL, PAFD_POLL_INFO PollReq, NTSTATUS Status)
NTSTATUS NTAPI AfdConnectedSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp, BOOLEAN Short)
NTSTATUS NTAPI AfdPacketSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
#define AFD_DbgPrint(_t_, _x_)
#define IO_NETWORK_INCREMENT
#define RemoveEntryList(Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
@ FileFsDeviceInformation
enum _FSINFOCLASS FS_INFORMATION_CLASS
_Must_inspect_result_ _In_ PFILE_OBJECT NewFileObject
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
IoSetCancelRoutine(Irp, CancelRoutine)
VOID NTAPI MmUnlockPages(IN PMDL Mdl)
#define ExFreePoolWithTag(_P, _T)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
NTSTATUS NTAPI AfdConnectedSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp, BOOLEAN Short)
NTSTATUS NTAPI AfdPacketSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
DRIVER_DISPATCH(nfs41_FsdDispatch)
struct _FILE_FS_DEVICE_INFORMATION FILE_FS_DEVICE_INFORMATION
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG _In_ ULONG Length
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)
#define IoCompleteRequest
BOOLEAN NTAPI IoCancelIrp(IN PIRP Irp)
VOID NTAPI IoReleaseCancelSpinLock(IN KIRQL Irql)
VOID NTAPI KeInitializeMutex(IN PKMUTEX Mutex, IN ULONG Level)
#define STATUS_FILE_CLOSED
#define STATUS_INVALID_INFO_CLASS
LONG_PTR FASTCALL ObfDereferenceObject(IN PVOID Object)
#define FILE_DEVICE_NAMED_PIPE
#define IRP_MJ_DEVICE_CONTROL
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IOCTL_AFD_EVENT_SELECT
#define IOCTL_AFD_GET_TDI_HANDLES
#define AFD_DISCONNECT_RECV
struct _AFD_CREATE_PACKET * PAFD_CREATE_PACKET
#define IOCTL_AFD_SET_INFO
#define IOCTL_AFD_SET_DISCONNECT_OPTIONS
#define IOCTL_AFD_WAIT_FOR_LISTEN
#define IOCTL_AFD_SET_CONNECT_OPTIONS_SIZE
#define IOCTL_AFD_GET_SOCK_NAME
#define IOCTL_AFD_DEFER_ACCEPT
#define IOCTL_AFD_START_LISTEN
#define IOCTL_AFD_SET_CONNECT_OPTIONS
#define IOCTL_AFD_GET_DISCONNECT_DATA
#define IOCTL_AFD_SUPER_ACCEPT
#define IOCTL_AFD_GET_CONTEXT
#define IOCTL_AFD_SET_DISCONNECT_DATA_SIZE
#define IOCTL_AFD_GET_DISCONNECT_OPTIONS
#define IOCTL_AFD_GET_INFO
#define IOCTL_AFD_GET_CONTEXT_SIZE
#define IOCTL_AFD_GET_CONNECT_OPTIONS
#define IOCTL_AFD_SET_CONNECT_DATA
#define AFD_CONNECTION_HANDLE
#define IOCTL_AFD_CONNECT
#define IOCTL_AFD_DISCONNECT
#define IOCTL_AFD_SEND_DATAGRAM
#define AFD_ADDRESS_HANDLE
#define IOCTL_AFD_VALIDATE_GROUP
#define IOCTL_AFD_SET_DISCONNECT_OPTIONS_SIZE
#define IOCTL_AFD_SUPER_CONNECT
#define IOCTL_AFD_RECV_DATAGRAM
#define IOCTL_AFD_ENUM_NETWORK_EVENTS
#define IOCTL_AFD_SET_DISCONNECT_DATA
#define AFD_ENDPOINT_CONNECTIONLESS
#define IOCTL_AFD_GET_PENDING_CONNECT_DATA
#define IOCTL_AFD_SET_CONNECT_DATA_SIZE
#define IOCTL_AFD_GET_PEER_NAME
#define IOCTL_AFD_SET_CONTEXT
#define IOCTL_AFD_GET_CONNECT_DATA
#define AFD_DISCONNECT_SEND
#define STATUS_BUFFER_TOO_SMALL
DWORD SizeOfTransportName
SOCK_SHARED_INFO SharedData
HANDLE TdiConnectionHandle
struct _IO_STACK_LOCATION::@4925::@4938 QueryVolume
union _IO_STACK_LOCATION::@1803 Parameters
struct _IO_STACK_LOCATION::@1803::@1804 DeviceIoControl
struct _LIST_ENTRY * Flink
#define TDI_DISCONNECT_RELEASE
#define TDI_DISCONNECT_ABORT
NTSTATUS TdiDisconnect(PIRP *Irp, PFILE_OBJECT TransportObject, PLARGE_INTEGER Time, USHORT Flags, PIO_COMPLETION_ROUTINE CompletionRoutine, PVOID CompletionContext, PTDI_CONNECTION_INFORMATION RequestConnectionInfo, PTDI_CONNECTION_INFORMATION ReturnConnectionInfo)
NTSTATUS TdiDisassociateAddressFile(PFILE_OBJECT ConnectionObject)
Disassociates a connection endpoint from an address file object.
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_INFO_LENGTH_MISMATCH
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG IoctlCode
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define ObDereferenceObject