Condividi tramite


NDIS_PD_QUERY_QUEUE_DEPTH funzione di callback (ndis.h)

La piattaforma PacketDirect (PD) chiama la funzione PDQueryQueueDepth del driver con funzionalità PDQueryQueueDepth per restituire il numero di strutture PD_BUFFER non elaborate che vengono pubblicate nella coda.

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

 

Sintassi

NDIS_PD_QUERY_QUEUE_DEPTH NdisPdQueryQueueDepth;

VOID() NdisPdQueryQueueDepth(
  [in]  const NDIS_PD_QUEUE *Queue,
  [out] ULONG64 *Depth
)
{...}

Parametri

[in] Queue

Puntatore a una coda di trasmissione o ricezione.

[out] Depth

In una coda di ricezione si tratta del numero di strutture PD_BUFFER disponibili per inserire pacchetti in ingresso. Ad esempio, se sono stati inseriti 10 buffer e 3 dei 10 sono già stati recuperati dal provider per inserire pacchetti in ingresso, questo valore deve essere 7. In una coda di trasmissione si tratta del numero di strutture PD_BUFFER che il provider non ha ancora recuperato dalla coda per la trasmissione.

Valore restituito

Questa funzione di callback non restituisce un valore.

Commenti

Nota Per i partner IHV: la possibilità di monitorare la profondità della coda è molto importante per i clienti di accedere alla compilazione della congestione e intraprendere azioni precauzionali. Una maggiore profondità della coda per una coda di trasmissione è un segno di aumento della congestione sul collegamento in uscita. Una profondità di coda decrescente per una coda RX è un segno del client non è in grado di elaborare pacchetti in ingresso abbastanza velocemente sul collegamento in ingresso. I client potrebbero dover monitorare lo stato di profondità della coda con frequenza (ad esempio, ottenere la profondità della coda per ogni post e operazione, pertanto il costo (nei cicli della CPU) della query sulla profondità della coda non deve essere evidente rispetto al costo di una singola chiamata PDPostAndDrainBufferList .
 

Esempi

Per definire una funzione PDQueryQueueDepth , è 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 PDQueryQueueDepth denominata "MyPDQueryQueueDepth ", usare il tipo di NDIS_PD_QUERY_QUEUE_DEPTH come illustrato in questo esempio di codice:

NDIS_PD_QUERY_QUEUE_DEPTH MyPDQueryQueueDepth;

Implementare quindi la funzione come indicato di seguito:

_Use_decl_annotations_
VOID
 MyPDQueryQueueDepth(
    CONST NDIS_PD_QUEUE*  Queue,
    ULONG64*  Depth
    )
  {...}

Il tipo di funzione NDIS_PD_QUERY_QUEUE_DEPTH è definito nel file di intestazione Ntddndis.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 NDIS_PD_QUERY_QUEUE_DEPTH 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 Windows 10
Server minimo supportato Windows Server 2016
Piattaforma di destinazione Windows
Intestazione ndis.h
IRQL <= DISPATCH_LEVEL