NdisMCmDispatchIncomingCloseCall tells a client to tear down an active or offered call, usually because the MCM driver has received a request from the network to close the connection.
VOID NdisMCmDispatchIncomingCloseCall( _In_ NDIS_STATUS CloseStatus, _In_ NDIS_HANDLE NdisVcHandle, _In_opt_ PVOID Buffer, _In_ UINT Size );
- CloseStatus [in]
Specifies a caller-determined NDIS_STATUS_XXX, indicating the reason for the disconnect request. During normal network operations, an MCM driver passes NDIS_STATUS_SUCCESS to indicate that it has received a request, initiated by the remote party, to close an active call.
- NdisVcHandle [in]
Specifies the handle to the VC of the call being disconnected. This handle was supplied by NDIS when the VC was originally created, whether by the MCM driver with NdisMCmCreateVc or as an input parameter to its ProtocolCoCreateVc function.
- Buffer [in, optional]
Pointer to a caller-allocated resident buffer containing additional protocol-specific disconnect data, if any. Depending on the underlying medium, this pointer can be NULL.
- Size [in]
Specifies the size in bytes of the buffer, zero if Buffer is NULL.
In the course of normal network operations, an MCM driver calls NdisMCmDispatchIncomingCloseCall with the CloseStatus set to NDIS_STATUS_SUCCESS because the corresponding client on the remote node has called NdisClCloseCall.
However, an MCM driver also can call NdisMCmDispatchIncomingCloseCall if either of the following occur:
The MCM driver has notified a client of an incoming call offer. When the miniport driver's ProtocolCmIncomingCallComplete function is called with the client's acceptance, it validates the input call parameters, which that client has modified. ProtocolCmIncomingCallComplete determines that the client is proposing unsupportable call parameters for the connection, so it calls NdisMCmDispatchIncomingCloseCall.
Abormal network conditions force the MCM driver to tear down active calls. For example, if the MCM driver is notified when any link on the connection between this client and the remote party to the connection goes down, the miniport driver would call NdisCmDispatchIncomingCloseCall to prevent the client from attempting (or expecting) further data transfers on such a broken connection.
After the client calls NdisClCloseCall thereby causing the deactivation of the VC, the original creator of the VC is responsible for destroying the VC. Either the client calls NdisCoDeleteVc, which causes NDIS to call the MCM driver's ProtocolCoDeleteVc function, or the MCM driver calls NdisMCmDeleteVc after calling NdisMCmDeactivateVc and releasing any additional resources it had associated with the VC that it created.
A call to NdisMCmDispatchIncomingCloseCall causes NDIS to call the client's ProtocolClIncomingCloseCall function.
Only connection-oriented miniport drivers that provide call-management support can call NdisMCmDispatchIncomingCall. Stand-alone call managers, which register themselves with NDIS as protocol drivers, call NdisCmDispatchIncomingCloseCall instead.
|Supported for NDIS 6.0 and NDIS 5.1 drivers (see NdisMCmDispatchIncomingCloseCall (NDIS 5.1)) in Windows Vista. Supported for NDIS 5.1 drivers (see NdisMCmDispatchIncomingCloseCall (NDIS 5.1)) in Windows XP.|
DDI compliance rules