32 for(
i = 0;
i <
Len;
i++ ) {
57 if (
FCB->DisconnectOptionsSize == 0)
68 FCB->DisconnectOptions,
88 if (!DisconnectOptions)
91 if (
FCB->DisconnectOptions)
95 FCB->DisconnectOptionsSize = 0;
96 FCB->FilledDisconnectOptions = 0;
100 DisconnectOptionsSize,
103 if (!
FCB->DisconnectOptions)
108 DisconnectOptionsSize);
110 FCB->DisconnectOptionsSize = DisconnectOptionsSize;
129 if (!DisconnectOptionsSize)
138 if (
FCB->DisconnectOptions)
141 FCB->DisconnectOptionsSize = 0;
142 FCB->FilledDisconnectOptions = 0;
146 *DisconnectOptionsSize,
151 FCB->DisconnectOptionsSize = *DisconnectOptionsSize;
168 if (
FCB->DisconnectDataSize == 0)
203 if (
FCB->DisconnectData)
207 FCB->DisconnectDataSize = 0;
208 FCB->FilledDisconnectData = 0;
215 if (!
FCB->DisconnectData)
222 FCB->DisconnectDataSize = DisconnectDataSize;
241 if (!DisconnectDataSize)
250 if (
FCB->DisconnectData)
253 FCB->DisconnectDataSize = 0;
254 FCB->FilledDisconnectData = 0;
261 if (!
FCB->DisconnectData)
264 FCB->DisconnectDataSize = *DisconnectDataSize;
323 Irp->IoStatus.Information = 0;
325 EaInfo =
Irp->AssociatedIrp.SystemBuffer;
334 EaInfo, EaInfoValue));
352 FCB->GroupID = ConnectInfo ? ConnectInfo->
GroupID : 0;
356 FCB->DeviceExt = DeviceExt;
375 FCB->TdiDeviceName.MaximumLength =
FCB->TdiDeviceName.Length;
377 FCB->TdiDeviceName.Length,
380 if( !
FCB->TdiDeviceName.Buffer ) {
390 FCB->TdiDeviceName.Length );
411 if (
FCB->TdiDeviceName.Buffer)
441 CurrentEntry =
FCB->PendingIrpList[
Function].Flink;
442 while (CurrentEntry != &
FCB->PendingIrpList[
Function])
444 NextEntry = CurrentEntry->
Flink;
450 CurrentEntry = NextEntry;
478 InFlightRequest[0] = &
FCB->ListenIrp;
479 InFlightRequest[1] = &
FCB->ReceiveIrp;
480 InFlightRequest[2] = &
FCB->SendIrp;
481 InFlightRequest[3] = &
FCB->ConnectIrp;
482 InFlightRequest[4] = &
FCB->DisconnectIrp;
486 if( InFlightRequest[
i]->InFlightRequest ) {
488 i, InFlightRequest[
i]->InFlightRequest));
517 if(
FCB->EventSelect )
523 if (
FCB->Recv.Window)
526 if (
FCB->Send.Window)
529 if (
FCB->AddressFrom)
532 if (
FCB->ConnectCallInfo)
535 if (
FCB->ConnectReturnInfo)
538 if (
FCB->ConnectData)
541 if (
FCB->DisconnectData)
544 if (
FCB->ConnectOptions)
547 if (
FCB->DisconnectOptions)
550 if (
FCB->LocalAddress)
553 if (
FCB->RemoteAddress)
556 if (
FCB->OnConnectSendBuffer)
559 if(
FCB->Connection.Object )
565 if(
FCB->AddressFile.Object )
572 DbgPrint(
"INVALID ADDRESS FILE HANDLE VALUE: %p %p\n",
FCB->AddressFile.Handle,
FCB->AddressFile.Object);
580 DbgPrint(
"INVALID CONNECTION HANDLE VALUE: %p %p\n",
FCB->Connection.Handle,
FCB->Connection.Object);
584 if (
FCB->TdiDeviceName.Buffer)
592 Irp->IoStatus.Information = 0;
618 FCB->DisconnectIrp.InFlightRequest =
NULL;
626 FCB->FilledDisconnectData =
MIN(
FCB->DisconnectDataSize,
FCB->ConnectReturnInfo->UserDataLength);
627 if (
FCB->FilledDisconnectData)
630 FCB->ConnectReturnInfo->UserData,
631 FCB->FilledDisconnectData);
634 FCB->FilledDisconnectOptions =
MIN(
FCB->DisconnectOptionsSize,
FCB->ConnectReturnInfo->OptionsLength);
635 if (
FCB->FilledDisconnectOptions)
638 FCB->ConnectReturnInfo->Options,
639 FCB->FilledDisconnectOptions);
667 return Irp->IoStatus.Status;
680 if (
FCB->DisconnectIrp.InFlightRequest)
685 FCB->ConnectCallInfo->UserData =
FCB->DisconnectData;
686 FCB->ConnectCallInfo->UserDataLength =
FCB->DisconnectDataSize;
687 FCB->ConnectCallInfo->Options =
FCB->DisconnectOptions;
688 FCB->ConnectCallInfo->OptionsLength =
FCB->DisconnectOptionsSize;
691 FCB->Connection.Object,
692 &
FCB->DisconnectTimeout,
693 FCB->DisconnectFlags,
696 FCB->ConnectCallInfo,
697 FCB->ConnectReturnInfo);
751 if (
FCB->ReceiveIrp.InFlightRequest)
755 FCB->Recv.Content = 0;
756 FCB->Recv.BytesUsed = 0;
762 FCB->PollState &= ~AFD_EVENT_RECEIVE;
780 if (!
FCB->ConnectCallInfo)
787 if (
FCB->DisconnectPending)
789 if (
FCB->DisconnectIrp.InFlightRequest)
792 ASSERT(!
FCB->DisconnectIrp.InFlightRequest);
813 FCB->PollState &= ~AFD_EVENT_SEND;
840 if (!
FCB->RemoteAddress)
851 FCB->PollState &= ~AFD_EVENT_SEND;
863 Buffer->Characteristics = 0;
885 Buffer =
Irp->AssociatedIrp.SystemBuffer;
922 Irp->IoStatus.Information = 0;
1058 DbgPrint(
"IOCTL_AFD_DEFER_ACCEPT is UNIMPLEMENTED!\n");
1062 DbgPrint(
"IOCTL_AFD_GET_PENDING_CONNECT_DATA is UNIMPLEMENTED!\n");
1066 DbgPrint(
"IOCTL_AFD_VALIDATE_GROUP is UNIMPLEMENTED!\n");
1083 (
"Irp: Unknown Major code was %x\n",
1179 PollReq =
Irp->AssociatedIrp.SystemBuffer;
1254 while (CurrentEntry != &DeviceExt->
Polls)
1267 CurrentEntry = CurrentEntry->
Flink;
1275 DbgPrint(
"WARNING!!! IRP cancellation race could lead to a process hang! (IOCTL_AFD_SELECT)\n");
1288 CurrentEntry =
FCB->PendingIrpList[
Function].Flink;
1289 while (CurrentEntry != &
FCB->PendingIrpList[
Function])
1293 if (CurrentIrp ==
Irp)
1302 CurrentEntry = CurrentEntry->
Flink;
1308 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
#define NT_SUCCESS(StatCode)
#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 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
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)
#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
#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_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
HANDLE TdiConnectionHandle
union _IO_STACK_LOCATION::@1669 Parameters
struct _IO_STACK_LOCATION::@4265::@4278 QueryVolume
struct _IO_STACK_LOCATION::@1669::@1670 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 RTL_CONSTANT_STRING(s)
#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
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_Must_inspect_result_ _In_ ULONG Flags
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define ObDereferenceObject