Condividi tramite


PROTOCOL_CM_OPEN_AF funzione di callback (ndis.h)

È necessaria la funzione ProtocolCmOpenAf . Questa funzione alloca risorse per ogni apertura per un gestore chiamate per interagire con un client NDIS orientato alla connessione che apre la famiglia di indirizzi.

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

Sintassi

PROTOCOL_CM_OPEN_AF ProtocolCmOpenAf;

NDIS_STATUS ProtocolCmOpenAf(
  [in]  NDIS_HANDLE CallMgrBindingContext,
  [in]  PCO_ADDRESS_FAMILY AddressFamily,
  [in]  NDIS_HANDLE NdisAfHandle,
  [out] PNDIS_HANDLE CallMgrAfContext
)
{...}

Parametri

[in] CallMgrBindingContext

Per un gestore chiamate non integrato, CallMgrBindingContext specifica l'handle in un'area di contesto allocata dal gestore chiamate in cui i responsabili delle chiamate mantengono le relative informazioni sullo stato per associazione. Il gestore chiamate ha fornito questo handle quando ha chiamato NdisOpenAdapterEx.

Per un gestore chiamate integrato (MCM), CallMgrBindingContext specifica l'handle in un'area di contesto allocata miniport in cui il miniport gestisce le informazioni sullo stato per adattatore. Il miniport ha fornito questo handle nella chiamata NdisMSetAttributesEx (per i driver 5.x) o la chiamata NdisMSetMiniportAttributes (per i driver 6.x).

[in] AddressFamily

Specifica la famiglia di indirizzi aperta da un client. Questa famiglia di indirizzi è stata registrata dal gestore chiamate quando ha chiamato NdisCmRegisterAddressFamilyEx.

[in] NdisAfHandle

Specifica un handle, fornito da NDIS, che identifica in modo univoco questa istanza della famiglia di indirizzi. Questo handle è opaco per il gestore chiamate e riservato per l'uso del sistema.

[out] CallMgrAfContext

Specifica l'handle in un'area di contesto fornita dal gestore chiamate in cui il gestore chiamate mantiene lo stato relativo a questa apertura di una famiglia di indirizzi fornita.

Valore restituito

ProtocolCmOpenAf restituisce lo stato delle operazioni come uno dei seguenti:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
Indica che il gestore chiamate ha allocato e inizializzato tutte le risorse necessarie per accettare richieste dal client a questa famiglia di indirizzi.
NDIS_STATUS_PENDING
Indica che l'operazione richiesta viene gestita in modo asincrono. Il gestore chiamate deve chiamare NdisCmOpenAddressFamilyComplete quando ha completato tutte le operazioni open-AF per indicare a NDIS (e al client) che le operazioni sono state completate.
NDIS_STATUS_RESOURCES
Indica che il gestore chiamate non è riuscito a completare le operazioni necessarie a causa di una mancanza di risorse di sistema disponibili, ad esempio memoria.
NDIS_STATUS_XXX
Indica che il gestore chiamate non è riuscito a impostarsi in uno stato in cui può accettare richieste dal client per operare su questa famiglia di indirizzi. Questo potrebbe essere uno stato di errore propagato da un'altra funzione di libreria NDIS o da qualsiasi stato di errore determinato dal writer del driver.

Commenti

ProtocolCmOpenAf esegue le allocazioni necessarie di risorse dinamiche e strutture che il writer di call manager ritiene necessario per eseguire operazioni per conto del client che apre un'istanza di questa famiglia di indirizzi. Tali risorse includono, ma non sono limitati a, buffer di memoria, strutture di dati, eventi e altre risorse simili. Un gestore chiamate deve anche inizializzare tutti i dati pertinenti per aprire prima di restituire il controllo a NDIS.

Quando un gestore chiamate ha allocato l'area dello stato per apertura, l'indirizzo dell'area di stato deve essere impostato nell'handle CallMgrAfContext prima di restituire il controllo a NDIS. A tale scopo, dereference CallMgrAfContext e archiviare un puntatore all'area dati come valore dell'handle. Ad esempio:

*CallMgrAfContext = SomeBuffer;

Se ProtocolCmOpenAf non può allocare le risorse per apertura necessarie per eseguire richieste successive per conto del client che apre questa famiglia di indirizzi, deve liberare tutte le risorse allocate per l'apertura e restituire il controllo all'NDIS con NDIS_STATUS_RESOURCES.

Se ProtocolCmOpenAf ha completato le operazioni necessarie e il cm è pronto per accettare richieste dal client, ProtocolCmOpenAf deve restituire il controllo il più rapidamente possibile con uno stato di NDIS_STATUS_SUCCESS.

Esempi

Per definire una funzione ProtocolCmOpenAf , è prima 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 usando i tipi di funzione consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una funzione ProtocolCmOpenAf denominata "MyCmOpenAf ", usare il tipo di PROTOCOL_CM_OPEN_AF come illustrato nell'esempio di codice seguente:

PROTOCOL_CM_OPEN_AF MyCmOpenAf;

Implementare quindi la funzione come indicato di seguito:

_Use_decl_annotations_
NDIS_STATUS
 MyCmOpenAf(
    NDIS_HANDLE  CallMgrBindingContext,
    PCO_ADDRESS_FAMILY  AddressFamily,
    NDIS_HANDLE  NdisAfHandle,
    PNDIS_HANDLE  CallMgrAfContext
    )
  {...}

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

Per informazioni su 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 ProtocolCmOpenAf (NDIS 5.1) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere ProtocolCmOpenAf (NDIS 5.1) in Windows XP.
Piattaforma di destinazione Windows
Intestazione ndis.h (includere Ndis.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

NdisClOpenAddressFamilyEx

NdisCmOpenAddressFamilyComplete NdisCmRegisterAddressFamilyEx

NdisOpenAdapterEx