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.
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:
- NdisMInitiateOffloadComplete
- NdisMQueryOffloadStateComplete
- NdisMInvalidateOffloadComplete
- NdisMTerminateOffloadComplete
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) |