Funzione FwpsInjectMacSendAsync0 (fwpsk.h)
La funzione FwpsInjectMacSendAsync0 può reinserire un frame MAC (Media Access Control) precedentemente assorbito (o un clone del frame) al percorso dei dati in uscita di livello 2 da cui è stato intercettato o inserire un frame MAC inventato.
Sintassi
NTSTATUS FwpsInjectMacSendAsync0(
[in] HANDLE injectionHandle,
[in, optional] HANDLE injectionContext,
[in] UINT32 flags,
[in] UINT16 layerId,
[in] IF_INDEX interfaceIndex,
[in] NDIS_PORT_NUMBER NdisPortNumber,
[in, out] NET_BUFFER_LIST *netBufferLists,
[in] FWPS_INJECT_COMPLETE completionFn,
[in, optional] HANDLE completionContext
);
Parametri
[in] injectionHandle
Handle di inserimento ottenuto in precedenza da una chiamata alla funzione FwpsChangectionHandleCreate0 con il parametro flags impostato su FWPS_INJECTION_TYPE_L2.
[in, optional] injectionContext
Handle facoltativo per il contesto di inserimento. Se specificato, può essere ottenuto chiamando Funzione FwpsQueryPacketChangectionState0 quando lo stato di inserimento del pacchetto FWPS_PACKET_INJECTION_STATE è FWPS_PACKET_INJECTED_BY_SELF o FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.
[in] flags
Riservato. Deve essere impostato su zero.
[in] layerId
Identificatore di runtime per il livello di filtro in cui viene elaborato il flusso di dati.
[in] interfaceIndex
Indice di interfaccia passato al valore in ingresso del driver del callout FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX.
[in] NdisPortNumber
Numero di porta NDIS passato al valore in ingresso del driver del callout FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT.
[in, out] netBufferLists
Puntatore a una struttura di NET_BUFFER_LIST che descrive i dati del pacchetto che vengono inseriti. Un driver di callout alloca una struttura NET_BUFFER_LIST da usare per inserire i dati dei pacchetti chiamando la funzione FwpsAllocateCloneNetBufferList0 o la funzione FwpsAllocateNetBufferAndNetBufferList0 . La struttura NET_BUFFER_LIST deve iniziare con un'intestazione MAC.
[in] completionFn
Puntatore a una funzione callout completionFn fornita dal driver del callout. Il motore di filtro chiama questa funzione dopo che i dati del pacchetto, descritti dal parametro netBufferLists , sono stati inseriti nello stack di rete. Questo puntatore deve essere specificato quando si inseriscono strutture clonate o create NET_BUFFER_LIST. Quando si inseriscono strutture NET_BUFFER_LIST originali, questo parametro può essere NULL se le strutture originali non vengono modificate.
[in, optional] completionContext
Puntatore a un contesto fornito dal driver di callout passato alla funzione callout a cui punta il parametro completionFn . Questo parametro è facoltativo e può essere NULL.
Valore restituito
La funzione FwpsInjectMacSendAsync0 restituisce uno dei codici NTSTATUS seguenti.
Codice restituito | Descrizione |
---|---|
|
L'inserimento dei dati dei frame MAC è stato avviato correttamente. Il motore di filtro chiama la funzione di completamento dopo che il motore di filtro ha completato l'inserimento dei dati dei frame MAC o quando si è verificato un errore successivamente. In caso di errore, il membro Status della struttura NET_BUFFER_LIST completata indicherà il motivo dell'errore. |
|
Il livello MAC non è pronto per accettare l'inserimento di dati del pacchetto. |
|
L'handle di inserimento viene chiuso. |
|
L'handle di inserimento non è stato creato con il parametro flags dell'oggetto Funzione FwpsChangectionHandleCreate0 impostata su FWPS_INJECTION_TYPE_L2. |
|
Si è verificato un errore. |
Commenti
Un driver di callback chiama la funzione FwpsInjectMacSendAsync0 per reinserire un frame MAC assorbito in precedenza (o un clone del frame) al percorso dati in ingresso di livello 2 da cui è stato intercettato o per inserire un frame MAC inventato.
Il parametro netBufferLists può essere una catena di NET_BUFFER_LIST . Tuttavia, la funzione di completamento può essere richiamata più volte, completando un segmento (o una singola NET_BUFFER_LIST) della catena.
I fotogrammi inseriti potrebbero essere classificati di nuovo se i pacchetti corrispondono allo stesso filtro classificato in origine. Pertanto, come per i callout a livelli IP, i callout di livello 2 devono anche proteggere da un'ispezione infinita dei pacchetti chiamando FwpsQueryPacketPacketPackectionState0.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 8. |
Piattaforma di destinazione | Universale |
Intestazione | fwpsk.h (include Fwpsk.h) |
Libreria | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |