Condividi tramite


PROTOCOL_CO_OID_REQUEST funzione di callback (ndis.h)

La funzione ProtocolCoOidRequest gestisce le richieste OID avviate dai client CoNDIS o dalle chiamate autonome avviate dalle chiamate alla funzione NdisCoOidRequest o che un driver MCM (Miniport Call Manager) viene avviato dalle chiamate alla funzione NdisMCmOidRequest .

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

Sintassi

PROTOCOL_CO_OID_REQUEST ProtocolCoOidRequest;

NDIS_STATUS ProtocolCoOidRequest(
  [in]      NDIS_HANDLE ProtocolAfContext,
  [in]      NDIS_HANDLE ProtocolVcContext,
  [in]      NDIS_HANDLE ProtocolPartyContext,
  [in, out] PNDIS_OID_REQUEST OidRequest
)
{...}

Parametri

[in] ProtocolAfContext

Handle che identifica un'area di contesto della famiglia di indirizzi (AF). Se il driver è un client, viene fornito questo handle quando viene chiamato Funzione NdisClOpenAddressFamilyEx per connettersi al gestore chiamate. Se il driver è un gestore chiamate, questo handle è stato fornito dalla funzione ProtocolCmOpenAf .

[in] ProtocolVcContext

Handle che identifica la connessione virtuale (VC) per eseguire query o impostare informazioni su, se la richiesta è specifica del VC. In caso contrario, questo parametro è NULL.

[in] ProtocolPartyContext

Handle che identifica la parte in un vc a più punti per eseguire query o impostare informazioni su, se la richiesta è specifica delle parti. In caso contrario, questo parametro è NULL.

[in, out] OidRequest

Puntatore a una struttura NDIS_OID_REQUEST che contiene sia il buffer che il pacchetto di richiesta per il driver di destinazione da gestire. A seconda della richiesta, il driver restituisce informazioni richieste nella struttura a cui punta OidRequest .

Valore restituito

ProtocolCoOidRequest può restituire uno dei seguenti elementi:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
Il client o il gestore chiamate hanno eseguito l'operazione richiesta.
NDIS_STATUS_PENDING
Il client o il gestore chiamate gestisce questa richiesta in modo asincrono e chiamerà il Funzione NdisCoOidRequestComplete o Funzione NdisMCmOidRequestComplete al termine dell'operazione richiesta.
NDIS_STATUS_INVALID_LENGTH o NDIS_STATUS_BUFFER_TOO_SHORT
Il driver ha esito negativo sulla richiesta perché il chiamante della funzione NdisCoOidRequest o NdisMCmOidRequest non ha fornito un valore adeguato per il membro InformationBufferdella struttura NDIS_OID_REQUEST per la richiesta specificata. Il driver imposta il membro BytesNeeded di NDIS_OID_REQUEST nel buffer nel parametro OidRequest sul valore specifico dell'OID del membro InformationBufferLength necessario per eseguire l'operazione richiesta.
NDIS_STATUS_XXX
Il client o il gestore chiamate non è riuscito a richiedere un motivo determinato dal driver, ad esempio i dati di input non validi specificati per un set.
NDIS_STATUS_NOT_SUPPORTED
Il client o il gestore chiamate non è riuscito a questa richiesta perché non riconosce il codice OID_GEN_CO_ XXX nel membro Oid nel buffer in NdisRequest.

Commenti

La funzione ProtocolCoOidRequest è necessaria per i client CoNDIS, i responsabili delle chiamate e le macchine virtuali. ProtocolCoOidRequest è simile alla funzione MiniportCoOidRequest del driver miniport .

I client coNDIS e i responsabili delle chiamate inviano informazioni tra loro specificando un valore non NULL nel parametro NdisAfHandle quando chiamano la funzione NdisCoOidRequest . Analogamente, le macchine virtuali chiamano NdisMCmOidRequest con valori espliciti per NdisAfHandle per comunicare informazioni ai client. Tali chiamate a NdisCoOidRequest o NdisMCmOidRequest causano NDIS di chiamare la funzione ProtocolCoOidRequest del client, del gestore chiamate o di MCM associati all'handle AF specificato.

Per registrare ProtocolCoOidRequest come client, un driver inizializza un NDIS_CO_CLIENT_OPTIONAL_HANDLERS struttura e lo passa al parametro OptionalHandlers della funzione NdisSetOptionalHandlers . Per registrare ProtocolCoOidRequest come gestore chiamate, un driver inizializza un NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS struttura e lo passa al parametro OptionalHandlers .

Se i parametri NdisVcHandle e NdisPartyHandle di NdisCoOidRequest o NdisMCmOidRequest sono NULL, la richiesta è globale. Vale a dire, un valore esplicito per NdisVcHandle o NdisPartyHandle indica che ProtocolCoOidRequest deve soddisfare rispettivamente la richiesta specificata per OGNI VC o per ogni parte.

Il buffer nel parametro OidRequest è stato allocato dal pool non di pagina ed è quindi accessibile a IRQL generato. Il chiamante NdisCoOidRequest(o NdisMCmOidRequest) deve rilasciare questo buffer e il buffer interno nel membro InformationBuffer della struttura NDIS_OID_REQUEST a cui punta OidRequest .

Se ProtocolCoOidRequest restituisce NDIS_STATUS_PENDING, il driver deve successivamente chiamare il Funzione NdisCoOidRequestComplete o Funzione NdisMCmOidRequestComplete per un driver MCM, quando il driver completa la richiesta.

Esempi

Per definire una funzione ProtocolCoOidRequest , è prima necessario specificare 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 ProtocolCoOidRequest denominata "MyCoOidRequest ", usare il tipo di PROTOCOL_CO_OID_REQUEST come illustrato in questo esempio di codice:

PROTOCOL_CO_OID_REQUEST MyCoOidRequest;

Implementare quindi la funzione come indicato di seguito:

_Use_decl_annotations_
NDIS_STATUS
 MyCoOidRequest(
    NDIS_HANDLE  ProtocolAfContext,
    NDIS_HANDLE  ProtocolVcContext,
    NDIS_HANDLE  ProtocolPartyContext,
    PNDIS_OID_REQUEST  OidRequest
    )
  {...}

Il tipo di funzione PROTOCOL_CO_OID_REQUEST è 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_CO_OID_REQUEST 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 in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Windows
Intestazione ndis.h (includere Ndis.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

MiniportCoOidRequest

NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_CO_CLIENT_OPTIONAL_HANDLERS

NDIS_OID_REQUEST

NdisClOpenAddressFamilyEx

NdisCoOidRequest

NdisCoOidRequestComplete

NdisMCmOidRequest

NdisMCmOidRequestComplete

NdisSetOptionalHandlers

ProtocolCmOpenAf