NdisMCmDispatchIncomingCloseCall function

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.

Syntax


VOID NdisMCmDispatchIncomingCloseCall(
  _In_      NDIS_STATUS CloseStatus,
  _In_      NDIS_HANDLE NdisVcHandle,
  _In_opt_  PVOID Buffer,
  _In_      UINT Size
);

Parameters

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.

Return value

None

Remarks

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.

Requirements

Version

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.

Header

Ndis.h (include Ndis.h)

IRQL

<= DISPATCH_LEVEL

DDI compliance rules

Irql_MCM_Function

See also

MiniportInterruptDPC
NdisClCloseCall
NdisMCmDispatchIncomingDropParty
NdisMCmDeactivateVc
NdisMCmDeleteVc
NdisMCmDispatchIncomingCall
ProtocolClIncomingCloseCall
ProtocolCoDeleteVc

 

 

Send comments about this topic to Microsoft

Show:
© 2015 Microsoft