PROTOCOL_CL_INCOMING_CLOSE_CALL funzione di callback (ndis.h)

La funzione ProtocolClIncomingCloseCall viene usata da tutti i client NDIS orientati alla connessione. Tutti questi client devono avere funzioni ProtocolClIncomingCloseCall completamente funzionali.

Nota È necessario dichiarare la funzione usando il tipo di PROTOCOL_CL_INCOMING_CLOSE_CALL . Per altre informazioni, vedere la sezione Esempi seguente.
 

Sintassi

PROTOCOL_CL_INCOMING_CLOSE_CALL ProtocolClIncomingCloseCall;

void ProtocolClIncomingCloseCall(
  [in] NDIS_STATUS CloseStatus,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PVOID CloseData,
  [in] UINT Size
)
{...}

Parametri

[in] CloseStatus

Specifica lo stato che indica la causa dell'disinstallazione della connessione, che in genere è NDIS_STATUS_SUCCESS per indicare che l'entità remota alla chiamata ha richiesto la chiusura della connessione. Qualsiasi altro valore indica che i problemi nella rete hanno causato l'interruzione della connessione da parte del gestore chiamate.

[in] ProtocolVcContext

Specifica l'handle per l'area di contesto per VC del client in cui viene chiusa la connessione. Indipendentemente dal valore di CloseStatus, il client non può né inviare né ricevere dati nel vc designato da NdisVcHandle archiviato in questa area di contesto.

[in] CloseData

Puntatore a un buffer contenente un messaggio di chiusura specifico del protocollo, possibilmente fornito dal client remoto ricevuto dal gestore chiamate in rete oppure questo parametro può essere NULL.

Quando CloseStatus è NDIS_STATUS_SUCCESS, questo parametro è NULL se il supporto di rete sottostante non supporta i trasferimenti di dati durante la chiusura di una connessione. Tuttavia, qualsiasi gestore chiamate specifico potrebbe definire una struttura per passare informazioni di diagnostica aggiuntive ai relativi client in caso di disinstallazione delle chiamate causate da problemi nella rete.

[in] Size

Specifica le dimensioni in byte del buffer in CloseData, zero se CloseData è NULL.

Valore restituito

nessuno

Osservazioni

Una chiamata a ProtocolClIncomingCloseCall indica che si è verificato uno dei seguenti:

  • Il gestore chiamate ha ricevuto una richiesta in rete per chiudere una connessione stabilita, identificata da NdisVcHandle che il client ha archiviato nella relativa area di contesto per vc in ProtocolVcContext .
  • Il gestore chiamate ha rilevato che i problemi di rete impediranno ulteriori trasferimenti di dati sulla connessione stabilita.
In entrambi i casi , ProtocolClIncomingCloseCall deve eseguire qualsiasi operazione determinata dal protocollo, ad esempio notificando ai client del client che la connessione viene interrotta. Ad esempio, se la chiamata da chiudere è un vc multipunto creato dal client, ProtocolClIncomingCloseCall deve chiamare NdisClDropParty una o più volte fino a quando solo una singola parte rimane nel relativo vc multipunto.

Se il vc specificato è una connessione a un singolo punto o a più punti, ProtocolClIncomingCloseCall deve chiamare NdisClCloseCall per confermare che il client non tenterà né tenterà di inviare né aspettarsi di ricevere dati in questo particolare vc. Se il gestore chiamate ha creato questo vc, ProtocolClIncomingCloseCall deve restituire il controllo dopo aver chiamato NdisClCloseCall. È responsabilità del responsabile della chiamata eliminare o riutilizzare qualsiasi VC creato.

Se il client ha originariamente creato questo vc per una chiamata in uscita, ProtocolClIncomingCloseCall può eseguire una delle operazioni seguenti dopo aver chiamato NdisClDropParty quante volte necessario, se necessario e NdisClCloseCall:

  • Se CloseStatus è NDIS_STATUS_SUCCESS, rimuovere vc con NdisCoDeleteVc e rilasciare l'area di contesto per vc del client o prepararla per il riutilizzo in una chiamata successiva a NdisCoCreateVc.
  • Se CloseStatus è NDIS_STATUS_SUCCESS, mantenere il vc creato dal client e prepararne l'area di contesto per vc per riutilizzarla in una chiamata successiva a NdisClMakeCall.
  • In caso contrario, rimuovere vc con NdisCoDeleteVc e rilasciare l'area di contesto per vc se il gestore chiamate ha indicato che la rete è diventata inoperativa.

Esempi

Per definire una funzione ProtocolClIncomingCloseCall , è innanzitutto necessario fornire una dichiarazione di funzione che identifica il tipo di funzione che si sta definendo. Windows fornisce un set di tipi di funzione per i driver. La dichiarazione di una funzione con i tipi di funzione consente di eseguire l'analisi del codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica rilevano gli errori ed è un requisito per la scrittura dei driver per il sistema operativo Windows.

Ad esempio, per definire una funzione ProtocolClIncomingCloseCall denominata "MyClIncomingCloseCall", usare il tipo PROTOCOL_CL_INCOMING_CLOSE_CALL come illustrato in questo esempio di codice:

PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;

Implementare quindi la funzione come segue:

_Use_decl_annotations_
VOID
 MyClIncomingCloseCall(
    NDIS_STATUS  CloseStatus,
    NDIS_HANDLE  ProtocolVcContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

Il tipo di funzione PROTOCOL_CL_INCOMING_CLOSE_CALL è definito nel file di intestazione Ndis.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione Use_decl_annotations alla definizione della funzione. L'annotazione Use_decl_annotations assicura che vengano utilizzate le annotazioni applicate al tipo di funzione PROTOCOL_CL_INCOMING_CLOSE_CALL nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver NDIS.

Per informazioni sulle Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere ProtocolClIncomingCloseCall (NDIS 5.1)) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere ProtocolClIncomingCloseCall (NDIS 5.1)) in Windows XP.
Piattaforma di destinazione Windows
Intestazione ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

NdisClCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmDispatchIncomingCloseCall

NdisCoCreateVc

NdisCoDeleteVc

NdisFreeMemory

NdisFreeToNPagedLookasideList NdisMCmDispatchIncomingCloseCall

ProtocolClDropPartyComplete

ProtocolCoDeleteVc