TDI_DISASSOCIATE_ADDRESS
When a kernel-mode client makes a TDI_DISASSOCIATE_ADDRESS request, it asks the underlying TDI transport driver to break an established association between a particular local-node address and a connection endpoint.
IRP
The transport calls IoGetCurrentIrpStackLocation with the given Irpto get a pointer to its own I/O stack location in the IRP, shown in the following list as IrpSp. The pointer to the IRP is shown in the following list as Irp. IRP members relevant to this request include the following:
Irp->IoStatus.Status
Specifies the final status of the disassociate-address request. The transport sets this member before it completes the IRP, possibly to one of the following:
STATUS_SUCCESS
STATUS_INVALID_CONNECTION
IrpSp->MajorFunction
Specifies IRP_MJ_INTERNAL_DEVICE_CONTROL. The transport can ignore this member if it exports a TdiDispatchInternalDeviceControl routine that handles only TDI_XXX requests.
IrpSp->MinorFunction
Specifies TDI_DISASSOCIATE_ADDRESS.
IrpSp->FileObject
Pointer to an open file object representing the connection endpoint to be disassociated from a local-node address. The transport uses the FsContext and, possibly, FsContext2 fields to access the state it maintains about the connection.
Comments
A client makes this request to disassociate a connection endpoint for an inactive connection from the associated local-node address, whether that client initiated the disconnection from its remote-node peer or vice versa.
After the address has been disassociated, the client can reassociate it with another connection endpoint or reassociate the connection endpoint with another open local-node address by making another TDI_ASSOCIATE_ADDRESS request. Consequently, the transport cannot assume that the file objects representing such an address and connection endpoint will be closed following the completion of the TDI_DISASSOCIATE_ADDRESS request.
TdiBuildDisassociateAddressis the macro a client uses to fill in this IRP.
Note The TDI feature is deprecated and will be removed in future versions of Microsoft Windows. Depending on how you use TDI, use either the Winsock Kernel (WSK) or Windows Filtering Platform (WFP). For more information about WFP and WSK, see Windows Filtering Platform and Winsock Kernel. For a Windows Core Networking blog entry about WSK and TDI, see Introduction to Winsock Kernel (WSK).
See Also
TDI_ASSOCIATE_ADDRESS, TdiBuildDisassociateAddress, TDI_DISCONNECT, TdiDispatchInternalDeviceControl
Requirements
Header |
TdiKrnl.h (include TdiKrnl.h) |