Condividi tramite


NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struttura (ndischimney.h)

[La funzionalità di offload del camino TCP è deprecata e non deve essere usata.]

La struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST è il blocco predefinito di base di un albero dello stato di offload del camino TCP. Un albero dello stato di offload può contenere una o più strutture NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

Sintassi

typedef struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST {
  IN NDIS_OBJECT_HEADER                Header;
  IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
  struct                               _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
  IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
  struct                               _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
#endif
  OUT NDIS_STATUS                      Status;
  IN PVOID                             NdisReserved[2];
  IN OUT PVOID                         *MiniportOffloadContext;
  IN NDIS_HANDLE                       NdisOffloadHandle;
  IN PVOID                             ProtocolReserved[2];
  IN PVOID                             MiniportReserved[2];
  IN PVOID                             ImReserved[2];
  IN PVOID                             Scratch[2];
  IN PVOID                             SourceHandle;
  IN NDIS_PORT_NUMBER                  PortNumber;
  IN OUT PNET_BUFFER_LIST              NetBufferListChain;
} NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, *PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST;

Members

Header

Intestazione della struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. L'intestazione viene formattata come struttura NDIS_OBJECT_HEADER . La struttura NDIS_OBJECT_HEADER contiene il numero di revisione della struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, il tipo di stato di offload che segue immediatamente la struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST in memoria e le dimensioni della struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, inclusa l'intestazione, in byte.

Il membro Type della struttura NDIS_OBJECT_HEADER indica il tipo di stato di offload e, implicando, la struttura specifica dello stato di offload (o strutture) che seguono immediatamente la struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST in memoria.

Sono supportati i valori di OFFLOAD_STATE_TYPE seguenti:

NeighborOffloadConstState

Specifica lo stato adiacente costante. Questo stato viene formattato come un NEIGHBOR_OFFLOAD_STATE_CONST struttura.

NeighborOffloadCachedState

Specifica lo stato del vicino memorizzato nella cache. Questo stato viene formattato come un NEIGHBOR_OFFLOAD_STATE_CACHED struttura.

NeighborOffloadDelegatedState

Specifica lo stato del vicino delegato. Questo stato viene formattato come un NEIGHBOR_OFFLOAD_STATE_DELEGATED struttura.

NeighborOffloadState

Specifica tutte le informazioni sullo stato adiacente, tra cui la costante, la cache e lo stato adiacente delegato. Questo stato viene formattato come struttura NEIGHBOR_OFFLOAD_STATE_CONST, seguito da una struttura NEIGHBOR_OFFLOAD_STATE_CACHED, seguita da una struttura NEIGHBOR_OFFLOAD_STATE_DELEGATED.

Ip4OffloadConstState

Specifica lo stato del percorso costante (IPv4). Questo stato viene formattato come un PATH_OFFLOAD_STATE_CONST struttura.

Ip4OffloadCachedState

Specifica lo stato del percorso memorizzato nella cache (IPv4). Questo stato viene formattato come un PATH_OFFLOAD_STATE_CACHED struttura.

Ip4OffloadDelegatedState

Specifica lo stato del percorso delegato (IPv4). Questo stato viene formattato come un PATH_OFFLOAD_STATE_DELEGATED struttura. Attualmente non esiste alcun stato del percorso delegato. La struttura PATH_OFFLOAD_STATE_DELEGATED non contiene variabili.

Ip4OffloadState

Specifica tutto lo stato del percorso (IPv4), incluso lo stato costante, memorizzato nella cache e il percorso delegato. Questo stato viene formattato come struttura PATH_OFFLOAD_STATE_CONST, seguito da una struttura PATH_OFFLOAD_STATE_CACHED, seguita da una struttura PATH_OFFLOAD_STATE_DELEGATED.

Ip6OffloadConstState

Specifica lo stato del percorso costante (IPv6). Questo stato viene formattato come struttura PATH_OFFLOAD_STATE_CONST.

Ip6OffloadCachedState

Specifica lo stato del percorso memorizzato nella cache (IPv6). Questo stato viene formattato come struttura PATH_OFFLOAD_STATE_CACHED.

Ip6OffloadDelegatedState

Specifica lo stato del percorso delegato (IPv6). Questo stato viene formattato come struttura PATH_OFFLOAD_STATE_DELEGATED. Attualmente non esiste alcun stato del percorso delegato. La struttura PATH_OFFLOAD_STATE_DELEGATED non contiene variabili.

Ip6OffloadState

Specifica tutte le informazioni sullo stato del percorso (IPv6), incluse la costante, memorizzata nella cache e lo stato del percorso delegato. Questo stato viene formattato come struttura PATH_OFFLOAD_STATE_CONST, seguito da una struttura PATH_OFFLOAD_STATE_CACHED, seguita da una struttura PATH_OFFLOAD_STATE_DELEGATED.

TcpOffloadConstState

Specifica lo stato TCP costante. Questo stato viene formattato come un TCP_OFFLOAD_STATE_CONST struttura.

TcpOffloadCachedState

Specifica lo stato TCP memorizzato nella cache. Questo stato viene formattato come un TCP_OFFLOAD_STATE_CACHED struttura.

TcpOffloadDelegatedState

Specifica lo stato TCP delegato. Questo stato viene formattato come un TCP_OFFLOAD_STATE_DELEGATED struttura.

TcpOffloadResourceState

Riservato. Questo valore OFFLOAD_STATE_TYPE, nonché la struttura TCP_OFFLOAD_RESOURCE_STATE, non vengono attualmente usati.

TcpOffloadState

Specifica tutte le informazioni sullo stato TCP, tra cui la costante, la cache e lo stato TCP delegato. Questo stato viene formattato come struttura TCP_OFFLOAD_STATE_CONST, seguito da una struttura TCP_OFFLOAD_STATE_CACHED, seguita da una struttura TCP_OFFLOAD_STATE_DELEGATED.

FilterReservedOffloadState

Riservato per i driver di filtro.

NextBlock

Puntatore alla struttura di NDIS_MINIPORT_OFFLOAD_BLOCK_LIST successiva al livello di stato di offload (vicino, percorso o TCP) indicato dal membro Type del membro Intestazione . NDIS_MINIPORT_OFFLOAD_BLOCK_LIST strutture collegate tramite puntatori NextBlock sono sempre allo stesso livello dello stato di offload. Un valore NextBlock di NULL indica che non esiste alcuna struttura successiva NDIS_MINIPORT_OFFLOAD_BLOCK_LIST successiva a questo livello.

_NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

DependentBlockList

Puntatore a una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST che si trova a un livello dipendente dello stato di offload (un livello superiore nell'albero dello stato di offload). Per l'offload del camino TCP:

  • Il membro DependentBlockList di una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST nel livello adiacente può puntare solo a una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST al livello del percorso.
  • Il membro DependentBlockList di una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST nel livello del percorso può puntare solo a una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST al livello TCP.
  • Il membro DependentBlockList di una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST al livello TCP è sempre NULL.
Un valore DependentBlockList di NULL indica che non esiste una struttura di NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dipendente.

Status

Lo stato di completamento di un'operazione di offload avviata, di offload di query, di offload di aggiornamento, di offload invalidato o di terminazione dell'operazione di offload eseguita sullo stato associato o a cui fa riferimento la struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. A seconda dell'operazione, la destinazione di offload scrive uno dei valori di NDIS_STATUS seguenti nel membro Status :

NDIS_STATUS_SUCCESS

Avvia offload: la destinazione di offload ha disattivato correttamente lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST e allo stato associato a tutte le strutture NDIS_MINIPORT_OFFLOAD_BLOCK_LIST immediatamente dipendenti.

Eseguire query, aggiornare, invalidare o terminare l'offload: la destinazione di offload ha eseguito correttamente l'operazione sullo stato associato o a cui fa riferimento la struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

Avviare l'offload: la destinazione di offload ha scaricato correttamente lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, ma non è stato possibile scaricare lo stato associato a una o più strutture NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dipendenti immediatamente.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_FAILURE

Avviare l'offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Impossibile classificare la causa dell'errore.

Eseguire query, aggiornare, invalidare o terminare l'offload: la destinazione di offload non è riuscita a eseguire l'operazione sullo stato associato o a cui fa riferimento la struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_RESOURCES

Avvia offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST perché la destinazione di offload non poteva allocare memoria host sufficiente.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_TCP_ENTRIES

Avviare l'offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST perché la destinazione di offload non ha potuto allocare un oggetto stato della connessione TCP.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_PATH_ENTRIES

Avvia offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST perché la destinazione di offload non poteva allocare un oggetto stato del percorso.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES

Avvia offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST perché la destinazione di offload non poteva allocare un oggetto stato adiacente.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES

Avviare l'offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST perché lo stack host specificato un membro dlSourceAddress non NULL nell'oggetto NEIGHBOR_OFFLOAD_STATE_CONST struttura e la destinazione di offload non supporta indirizzi MAC di origine configurabili o non può accettare indirizzi MAC di origine aggiuntivi.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES

Avviare l'offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST perché la destinazione di offload non ha potuto allocare una struttura di dati per l'indirizzo IP di origine a cui fa riferimento il puntatore SourceAddress nell'oggetto PATH_OFFLOAD_STATE_CONST struttura.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER

Avviare l'offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST perché la destinazione di offload non poteva allocare buffer di trasmissione TCP sufficienti.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER

Avviare l'offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST perché la destinazione di offload non poteva allocare buffer di ricezione TCP sufficienti.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW

Avviare l'offload: la destinazione di offload non è riuscita a scaricare lo stato associato alla struttura di NDIS_MINIPORT_OFFLOAD_BLOCK_LIST perché il membro InitialRcvWnd specificato nell'oggetto TCP_OFFLOAD_STATE_CACHED struttura è più grande della destinazione di offload può supportare.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_VLAN_ENTRIES

Avviare l'offload: la destinazione di offload ha esaurito le risorse per il rilevamento di ID VLAN aggiuntivi.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_VLAN_MISMATCH

Avvia offload: il VlanId adiacente non è zero e non corrisponde a uno degli ID VLAN dell'interfaccia.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NDIS_STATUS_OFFLOAD_PATH_MTU

Il percorso MTU per la connessione TCP è maggiore del supporto della destinazione di offload.

Eseguire query, aggiornare, invalidare o terminare l'offload: non un valore di stato consentito.

NdisReserved[2]

Riservato per l'uso da parte di NDIS.

MiniportOffloadContext

Puntatore a una posizione di memoria in cui la destinazione di offload scrive un valore PVOID. Il valore PVOID fa riferimento all'area del contesto di offload in cui la destinazione di offload archivia lo stato associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Se lo stato è un nuovo stato da disattivare dalla destinazione di offload, il percorso di memoria indicato da MiniportOffloadContext contiene un valore NULL . Dopo aver disattivato lo stato, la destinazione di offload scrive un valore PVOID in questa posizione di memoria. Il valore PVOID fornito dalla destinazione di offload fa riferimento all'area del contesto di offload in cui è stato scaricato lo stato. Se il membro MiniportOffloadContext stesso è NULL, la struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST è un segnaposto nell'albero dello stato offload.

NdisOffloadHandle

Handle fornito dalla destinazione di offload nelle chiamate successive Funzione NdisTcpOffloadEventHandler o Funzione NdisTcpOffloadReceiveHandler quando si effettua un'indicazione sullo stato di offload associato a questa struttura di NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

ProtocolReserved[2]

Riservato per l'uso da parte dei driver di protocollo, che possono usare questa area per scopi propri. Le destinazioni di offload non devono modificare questo valore.

MiniportReserved[2]

Riservato per l'uso da parte di destinazioni di offload, che possono usare questa area per scopi propri, ad esempio accodamento dello stato di offload associato alla struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

ImReserved[2]

Riservato per l'uso da parte di driver intermedi, che possono usare questa area per scopi propri. Le destinazioni di offload non devono modificare questo valore.

Scratch[2]

La destinazione di offload può usare questa area per il rilevamento interno. Le informazioni in questa area sono valide solo quando la destinazione di offload ha la proprietà del NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

SourceHandle

Questo membro non è significativo per una destinazione di offload. Una destinazione di offload non deve modificare questo membro.

PortNumber

Numero di porta che identifica una porta dell'adattatore miniport. Per assegnare un numero di porta dell'adattatore miniport, chiamare la funzione NdisMAllocatePort . Un valore zero identifica la porta predefinita di un adattatore miniport. Usare la porta predefinita se il driver miniport non ha allocato le porte per l'adattatore specificato.

NetBufferListChain

Quando lo stack host specifica un valore NULL , NetBufferListChain non è significativo e può essere ignorato dalla destinazione di offload.

Quando lo stack host specifica un valore non NULL , NetBufferListChain punta a una struttura NET_BUFFER_LIST che può essere una struttura autonoma o la prima struttura in un elenco collegato di tali strutture. Ogni struttura NET_BUFFER_LIST nell'elenco collegato descrive una struttura NET_BUFFER . La struttura NET_BUFFER esegue il mapping a una catena di elenchi di descrittori di memoria (MDLs). Le NET_BUFFER_LIST e le strutture associate sono bloccate in modo che rimangano residenti nella memoria fisica. Tuttavia, non vengono mappati nella memoria di sistema.

Gli MDLs associati alle strutture NET_BUFFER contengono dati che lo stack host passa alla destinazione di offload come parte dell'operazione di offload. La destinazione di offload completa tali dati in modo asincrono nello stack host chiamando la funzione NdisTcpOffloadXxxComplete . Attualmente, l'elenco collegato può contenere solo un tipo di dati: dati in sospeso. Per altre informazioni, vedere Gestione dei dati di invio in sospeso durante e dopo un'operazione di offload.

Una destinazione di offload può passare dati in sospeso allo stack host quando termina il caricamento di una connessione TCP. In questo caso, la destinazione di offload specifica un valore non NULL per il membro NetBufferListChain quando si chiama Funzione NdisMTerminateOffloadComplete . Se la destinazione di offload non passa i dati per una connessione TCP terminata, deve specificare un valore NULL per il membro NetBufferListChain .

Commenti

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST strutture possono essere collegate insieme per creare il framework di un albero dello stato di offload del camino TCP.

Tramite NDIS, lo stack host passa un puntatore OffloadBlockList , che fa riferimento a un albero dello stato offload a una delle funzioni seguenti di una destinazione di offload:

La destinazione di offload restituisce l'albero allo stack host passando lo stesso puntatore alla funzione di completamento corrispondente: Una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST può essere immediatamente seguita in memoria da una struttura dello stato di offload che contiene lo stato da caricare, eseguire query, aggiornare, invalidare o terminare. Il membro Type della struttura di NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Intestazione specifica il tipo di stato di offload e, in base alla struttura specifica dello stato di offload (o delle strutture) che seguono la struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST in memoria.

La destinazione dello stack host e dell'offload usa i membri *MiniportOffloadContext e NdisOffloadHandle di una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST per fare riferimento allo stato disattivato. Per altre informazioni, vedere Archiviazione e riferimento allo stato disattivato.

Una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST può eseguire una delle diverse funzioni in un albero dello stato offload. Può funzionare come segnaposto, un linker o può trasmettere un nuovo stato da caricare dalla destinazione di offload. Per altre informazioni, vedere Segnaposto, Linker e Nuovi offload.

Prima di completare un offload avviato, eseguire query offload, aggiornare offload, invalidare l'offload o terminare l'operazione di offload, una destinazione di offload deve scrivere lo stato di completamento al membro Stato di ogni struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST nell'albero dello stato.

Requisiti

Requisito Valore
Intestazione ndischimney.h (includere Ndischimney.h)

Vedi anche

MiniportInitiateOffload

MiniportInvalidateOffload

MiniportQueryOffload

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisMAllocatePort

NdisMInitiateOffloadComplete

NdisMInvalidateOffloadComplete NdisMQueryOffloadStateComplete NdisMTerminateOffloadComplete

NdisMUpdateOffloadComplete

NdisTcpOffloadEventHandler

NdisTcpOffloadReceiveHandler

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED