Condividi tramite


NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST struttura (ndischimney.h)

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

Struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.

Sintassi

typedef struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST {
  IN NDIS_OBJECT_HEADER                Header;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
#endif
  OUT NDIS_STATUS                      Status;
  IN PVOID                             NdisReserved[3];
  IN OUT PNDIS_OFFLOAD_HANDLE          OffloadHandle;
  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_PROTOCOL_OFFLOAD_BLOCK_LIST, *PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;

Members

Header

Intestazione della struttura NDIS_PROTOCOL_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_PROTOCOL_OFFLOAD_BLOCK_LIST, il tipo di stato di offload che segue immediatamente la struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST in memoria e le dimensioni della struttura NDIS_PROTOCOL_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_PROTOCOL_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 tutti gli stati vicini, tra cui la costante, memorizzata nella 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 tutto lo stato del percorso (IPv6), 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.

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 tutti gli stati TCP, tra cui la costante, memorizzata nella 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_PROTOCOL_OFFLOAD_BLOCK_LIST successiva al livello di stato di offload (vicino, percorso o TCP) indicato dal membro Type del membro Intestazione . NDIS_PROTOCOL_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 successiva NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST a questo livello.

_NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST

DependentBlockList

Puntatore a una struttura NDIS_PROTOCOL_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_PROTOCOL_OFFLOAD_BLOCK_LIST nel livello adiacente può puntare solo a una struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST al livello del percorso. Il membro DependentBlockList di una struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST nel livello del percorso può puntare solo a una struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST al livello TCP. Il membro DependentBlockList di una struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST al livello TCP è sempre NULL.

Un valore DependentBlockList di NULL indica che non esiste una struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST dipendente.

Status

Stato di completamento di un'operazione di offload avviata, offload di query, offload di aggiornamento, offload invalidato o terminare l'operazione di offload eseguita sullo stato associato allo stato associato o a cui fa riferimento la struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. A seconda dell'operazione, NDIS scrive uno dei valori di NDIS_STATUS seguenti nel membro Status :

NDIS_STATUS_SUCCESS

Avvia offload: la destinazione di offload sottostante ha disattivato correttamente lo stato associato alla struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST e allo stato associato a tutte le strutture PROTOCOL_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_PROTOCOL_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

Avvia offload: la destinazione di offload sottostante è stata disattivata correttamente lo stato associato alla struttura di NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, ma non è stato possibile scaricare lo stato associato a una o più delle strutture NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST immediatamente dipendenti.

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

NDIS_STATUS_FAILURE

Avvia offload: la destinazione offload sottostante non è riuscita a scaricare lo stato associato alla struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. Impossibile classificare la causa dell'errore.

Query, aggiornamento, invalidazione o termina offload: la destinazione di offload non è riuscita a eseguire l'operazione sullo stato associato o a cui fa riferimento la struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_RESOURCES

Avviare l'offload: la destinazione di offload non è riuscita a eseguire l'offload dello stato associato alla struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST perché la destinazione di offload non è riuscita ad allocare memoria host sufficiente.

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

NDIS_STATUS_OFFLOAD_TCP_ENTRIES

Avviare l'offload: la destinazione di offload non è riuscita a eseguire l'offload dello stato associato alla struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST perché la destinazione di offload non è in grado di allocare un oggetto stato della connessione TCP.

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

NDIS_STATUS_OFFLOAD_PATH_ENTRIES

Avviare l'offload: la destinazione di offload non è riuscita a eseguire l'offload dello stato associato alla struttura di NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST perché la destinazione di offload non è riuscita ad allocare un oggetto stato del percorso.

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

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES

Avviare l'offload: la destinazione di offload non è riuscita a eseguire l'offload dello stato associato alla struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST perché la destinazione di offload non è riuscita ad allocare un oggetto stato adiacente.

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

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES

Avviare l'offload: la destinazione di offload non è riuscita a eseguire l'offload dello stato associato alla struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST perché lo stack host ha specificato un membro DlSourceAddress non NULL nel 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: valore di stato non consentito.

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES

Avviare l'offload: la destinazione di offload non è riuscita a eseguire l'offload dello stato associato alla struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST perché la destinazione di offload non è in grado di allocare una struttura di dati per l'indirizzo IP di origine a cui fa riferimento il puntatore SourceAddress nel PATH_OFFLOAD_STATE_CONST struttura.

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

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER

Avviare l'offload: la destinazione di offload non è riuscita a eseguire l'offload dello stato associato alla struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST perché la destinazione di offload non è stata in grado di allocare buffer di trasmissione TCP sufficienti.

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

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER

Avviare l'offload: la destinazione di offload non è riuscita a eseguire l'offload dello stato associato alla struttura di NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST perché la destinazione di offload non è riuscita ad allocare buffer di ricezione TCP sufficienti.

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

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW

Avviare l'offload: la destinazione di offload non è riuscita a eseguire l'offload dello stato associato alla struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST perché il membro InitialRcvWnd specificato nell'oggetto TCP_OFFLOAD_STATE_CACHED struttura è maggiore del supporto della destinazione di offload.

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

NDIS_STATUS_OFFLOAD_VLAN_ENTRIES

Avviare l'offload: la destinazione di offload ha esaurito le risorse per tenere traccia degli ID VLAN aggiuntivi.

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

NDIS_STATUS_OFFLOAD_VLAN_MISMATCH

Avviare l'offload: il VlanId adiacente è diverso da zero e non corrisponde a uno degli ID VLAN dell'interfaccia.

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

NDIS_STATUS_OFFLOAD_PATH_MTU

Avviare l'offload: il percorso MTU per la connessione TCP è maggiore del supporto della destinazione di offload.

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

NdisReserved[3]

Riservato per l'uso da parte di NDIS.

OffloadHandle

Puntatore a una struttura NDIS_OFFLOAD_HANDLE . La struttura NDIS_OFFLOAD_HANDLE rappresenta il contesto di un protocollo o di un driver intermedio per un oggetto stato offloaded.

ProtocolReserved[2]

Riservato per l'uso da parte dei driver di protocollo, che possono usare questa area per scopi propri.

MiniportReserved[2]

Riservato per l'uso da parte di destinazioni di offload o la parte miniport di un driver intermedio.

ImReserved[2]

Riservato per l'uso da parte dei driver intermedi, che possono usare questa area per scopi propri.

Scratch[2]

Il driver di protocollo o il driver intermedio può usare questa area per il rilevamento interno. Le informazioni contenute in quest'area sono valide solo se il driver ha la proprietà del NDIS_PROTOCOL_OFFLOAD_BLOCK_LIS T.

SourceHandle

Questo membro non è significativo per un protocollo o un driver intermedio. Un protocollo o un driver intermedio non deve modificare questo membro.

Quando si propaga il completamento di un'operazione di manipolazione dello stato, un driver intermedio copia l'oggetto
SourceHandle archiviato nella voce di chiamata di messaggistica istantanea al membro SourceHandle dell'oggetto NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struttura che passa alla funzione NdisMXxxComplete.

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. Utilizzare la porta predefinita se il driver miniport non ha allocato le porte per l'adattatore specificato.

NetBufferListChain

Quando il protocollo o il driver intermedio specifica un valore NULL , NetBufferListChain non è significativo e può essere ignorato dal driver sottostante o dalla destinazione di offload.

Quando un protocollo o un driver intermedio 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 alla memoria di sistema.

Gli ELENCHI DI dati associato alle strutture NET_BUFFER contengono dati trasmessi come parte di un'operazione di manipolazione dello stato o il completamento di tale operazione. Attualmente, l'elenco collegato può contenere solo un tipo di dati: dati di invio in sospeso. Per altre informazioni sull'invio di dati, vedere Gestione dei dati di invio in sospeso durante e dopo un'operazione di offload.

Una destinazione di offload o un driver intermedio può passare dati in sospeso all'overlying driver o allo stack host quando termina l'offload 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 di invio per una connessione TCP che viene terminata, specifica un valore NULL per il membro NetBufferListChain .

Commenti

Un driver intermedio crea una struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST da un NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struttura durante la propagazione di un'operazione di manipolazione dello stato. Se propagando il completamento di tale operazione, un driver intermedio usa una struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST per costruire una struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

Una struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST può essere immediatamente seguita in memoria da una struttura dello stato di offload che contiene lo stato da eseguire (o che è stato) offloaded, sottoposto a query, aggiornato, invalidato o terminato. Il membro Typedell'intestazione della struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST specifica il tipo di stato di offload e, in modo implicito, la struttura specifica dello stato di offload (o delle strutture) che seguono la struttura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST in memoria.

Requisiti

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

Vedi anche

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_CONST

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisInitiateOffload

NdisInvalidateOffload

NdisMAllocatePort

NdisQueryOffload

NdisTerminateOffload

NdisUpdateOffload

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

ProtocolInitiateOffloadComplete ProtocolInvalidateOffloadComplete ProtocolQueryOffloadComplete ProtocolTerminateOffloadOffloadComplete ProtocolUpdateOffloadComplete

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED