Condividi tramite


MINIPORT_PROCESS_SG_LIST funzione di callback (ndis.h)

Un driver miniport master del bus fornisce una funzione MiniportProcessSGList per elaborare elenchi di dispersione/raccolta per i dati di rete.

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

Sintassi

MINIPORT_PROCESS_SG_LIST MiniportProcessSgList;

void MiniportProcessSgList(
  [in] PDEVICE_OBJECT pDO,
  [in] PVOID Reserved,
  [in] PSCATTER_GATHER_LIST pSGL,
  [in] PVOID Context
)
{...}

Parametri

[in] pDO

I driver miniport devono ignorare questo parametro.

[in] Reserved

I driver miniport devono ignorare questo parametro.

[in] pSGL

Puntatore a un buffer elenco a dispersione/raccolta. Questo non è necessariamente lo stesso buffer di quello specificato nel driver nella chiamata all'oggetto Funzione NdisMAllocateNetBufferSGList

[in] Context

Puntatore a un'area di contesto creata dal driver miniport prima di chiamare NdisMAllocateNetBufferSGList.

Valore restituito

nessuno

Osservazioni

I driver miniport chiamano Funzione NdisMRegisterScatterGatherDma per registrare una funzione MiniportProcessSGList . Quando un driver miniport chiama NdisMAllocateNetBufferSGList per creare un elenco di dispersione/raccolta, NDIS chiama HAL per creare l'elenco.

NDIS chiama la funzione MiniportProcessSGList del driver miniport se NdisMAllocateNetBufferSGList ha esito positivo. Tuttavia, un esito positivo restituito da tale funzione non garantisce che il callback sia già stato richiamato; può essere richiamato in modo asincrono.

Quando NDIS chiama MiniportProcessSGList, il driver può inviare la struttura di NET_BUFFER all'hardware. MiniportProcessSGList invia gli indirizzi fisici dell'elenco di dispersione/raccolta alla DMA della scheda di interfaccia di rete e invia un comando di invio alla scheda di interfaccia di rete.

HAL può chiamare MiniportProcessSGList prima o dopo che NDIS restituisce da NdisMAllocateNetBufferSGList. Pertanto, i writer di driver non devono presupporre che la chiamata venga effettuata nel contesto di NdisMAllocateNetBufferSGList.

NDIS chiama MiniportProcessSGList in IRQL = DISPATCH_LEVEL.

Esempi

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

MINIPORT_PROCESS_SG_LIST MyProcessSGList;

Implementare quindi la funzione come indicato di seguito:

_Use_decl_annotations_
VOID
 MyProcessSGList(
    PDEVICE_OBJECT  pDO,
    PVOID  Reserved,
    PSCATTER_GATHER_LIST  pSGL,
    PVOID  Context
    )
  {...}

Il tipo di funzione MINIPORT_PROCESS_SG_LIST è 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 MINIPORT_PROCESS_SG_LIST 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

NdisMAllocateNetBufferSGList

NdisMRegisterScatterGatherDma