ClientEventDisconnect
NTSTATUS
ClientEventDisconnect (
IN PVOID TdiEventContext,
IN CONNECTION_CONTEXT ConnectionContext,
IN LONG DisconnectDataLength,
IN PVOID DisconnectData,
IN LONG DisconnectInformationLength,
IN PVOID DisconnectInformation,
IN ULONG DisconnectFlags
);
ClientEventDisconnect is an event handler that the underlying TDI transport
calls in response to an incoming disconnection notification from a remote
node.
Parameters
-
TdiEventContext
-
Points to the client-supplied context provided in the IRP that was set up with
TdiBuildSetEventHandler when ClientEventDisconnect was registered with
the underlying transport.
-
ConnectionContext
-
Points to the client's context area for this connection endpoint. The
client previously supplied this value to its underlying transport when its
ClientEventConnect handler accepted a connection offer from the remote-node
peer and/or when it opened the connection endpoint with ZwCreateFile.
-
DisconnectDataLength
-
Specifies the size in bytes of the buffer at DisconnectData. Zero
indicates that no disconnect data was transmitted from the remote node.
-
DisconnectData
-
Points to a buffer containing disconnect data received from the remote node by
the underlying transport. This pointer is NULL if DisconnectDataLength
is zero.
-
DisconnectInformationLength
-
Specifies the size in bytes of the buffer at DisconnectInformation.
Zero indicates that no additional disconnect information was transmitted from
the remote node.
-
DisconnectInformation
-
Points to a buffer containing any additional transport-specific disconnect
information. This pointer is NULL if DisconnectInformationLength is
zero.
-
DisconnectFlags
-
Specifies the nature of the disconnection operation as zero or as one of the
following flags:
-
TDI_DISCONNECT_ABORT
-
The transport is closing the endpoint-to-endpoint connection immediately
without completing any pending operations on the connection. In effect, this
flag is equivalent to a DisconnectFlags of zero.
-
TDI_DISCONNECT_RELEASE
-
The transport is engaged in a controlled disconnect operation with the remote
node.
Return Value
ClientEventDisconnect can return STATUS_SUCCESS.
Comments
A call to ClientEventDisconnect notifies the local-node client that its
remote-node peer is closing their established endpoint-to-endpoint connection.
Depending on the input DisconnectFlags, the disconnect can be either
controlled or uncontrolled. ClientEventDisconnect is the last event handler
the TDI driver calls on an endpoint-to-endpoint connection.
If TDI_DISCONNECT_RELEASE is set in the DisconnectFlags, both
transports are coordinating a controlled disconnection. (See TDI_DISCONNECT
for details.)
A call to ClientEventDisconnect notifies the local-node client that
endpoint-to-endpoint activity has ceased or is ceasing on the connection
endpoint opened by that client. However, the connection endpoint is still
valid after the endpoint-to-endpoint connection has been broken. The
local-node client can reuse its open connection endpoint in a subsequent
operation after ClientEventDisconnect returns control.
ClientEventDisconnect can be called at IRQL DISPATCH_LEVEL.
See Also
TdiBuildDisconnect, TdiBuildSetEventHandler,
TDI_DISCONNECT