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.
The transport calls IoGetCurrentIrpStackLocation with the given Irp to get a pointer to its own I/O stack location in the IRP, shown in the following list as IrpSp. IRP members relevant to this request include the following:
STATUS_SUCCESS
STATUS_INVALID_CONNECTION
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.
TdiBuildDisassociateAddress is the macro a client uses to fill in this IRP.
TDI_ASSOCIATE_ADDRESS, TdiBuildDisassociateAddress, TDI_DISCONNECT, TdiDispatchInternalDeviceControl