Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция FwpsInjectMacSendAsync0 может повторно перенаправлять ранее поглощаемый кадр управления доступом к мультимедиа (MAC) (или клон кадра) обратно на путь исходящего трафика 2, из которого он был перехвачен, или внедрить созданный кадр MAC.
Синтаксис
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
);
Параметры
[in] injectionHandle
Дескриптор внедрения, полученный ранее вызовом функции FwpsInjectionHandleCreate0 с флагами параметром FWPS_INJECTION_TYPE_L2.
[in, optional] injectionContext
Необязательный дескриптор контекста внедрения. Если он указан, его можно получить путем вызова функцию FwpsQueryPacketInjectionState0 при FWPS_PACKET_INJECTION_STATE внедрения пакета FWPS_PACKET_INJECTED_BY_SELF или FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.
[in] flags
Скрытный. Должно быть задано равно нулю.
[in] layerId
Идентификатор времени выполнения для слоя фильтрации, в котором обрабатывается поток данных.
[in] interfaceIndex
Индекс интерфейса, передаваемый в драйвера выноски, классифицируетFn входящее значение FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX.
[in] NdisPortNumber
Номер порта NDIS, передаваемый драйвера выноски, классифицирует входящих значений FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT.
[in, out] netBufferLists
Указатель на структуру NET_BUFFER_LIST, описывающую внедренные данные пакета. Драйвер выноски выделяет структуру NET_BUFFER_LIST для внедрения данных пакетов путем вызова функции FwpsAllocateCloneNetBufferList0или функции FwpsAllocateNetBufferAndNetBufferList0. Структура NET_BUFFER_LIST должна начинаться с заголовка MAC.
[in] completionFn
Указатель на функцию завершения Fn выноски, предоставляемую драйвером выноски. Модуль фильтров вызывает эту функцию после того, как данные пакета, описанные параметром netBufferLists, были внедрены в сетевой стек. Этот указатель необходимо указать при внедрении клонированных или созданных NET_BUFFER_LIST структур. При внедрении исходных NET_BUFFER_LIST структур этот параметр может иметь значение NULL, если исходные структуры не изменяются.
[in, optional] completionContext
Указатель на драйвер выноски, предоставленный контекстом, передаваемым в функцию выноски, на которую указывает параметр завершенияFn. Этот параметр является необязательным и может быть null.
Возвращаемое значение
Функция FwpsInjectMacSendAsync0 возвращает один из следующих кодов NTSTATUS.
| Возвращаемый код | Описание |
|---|---|
|
Внедрение данных кадра MAC было успешно инициировано. Модуль фильтров вызывает функцию завершения после завершения внедрения данных кадра MAC или при возникновении ошибки. В случае ошибки элемент состояния завершенной структуры NET_BUFFER_LIST указывает причину сбоя. |
|
Уровень MAC не готов принять внедрение данных пакетов. |
|
Дескриптор внедрения закрывается. |
|
Дескриптор внедрения не был создан с флагами параметра функцию FwpsInjectionHandleCreate0 значение FWPS_INJECTION_TYPE_L2. |
|
Произошла ошибка. |
Замечания
Драйвер обратного вызова вызывает функцию FwpsInjectMacSendAsync0 для повторного переключения ранее поглощаемого кадра MAC (или клона кадра) обратно в путь к входящего трафика 2, из которого он был перехвачен, или внедрить созданный кадр MAC.
Параметр netBufferLists может быть цепочкой NET_BUFFER_LIST. Однако функция завершения может вызываться несколько раз каждый, завершая сегмент (или один NET_BUFFER_LIST) цепочки.
Внедренные кадры могут снова классифицироваться, если пакеты соответствуют тому же фильтру, что и первоначально классифицированные. Поэтому, как и при выносках на IP-уровнях, выноски уровня 2 также должны защищаться от бесконечной проверки пакетов путем вызова FwpsQueryPacketInjectionState0.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Доступно начиная с Windows 8. |
| целевая платформа | Всеобщий |
| заголовка | fwpsk.h (include Fwpsk.h) |
| библиотеки | Fwpkclnt.lib |
| IRQL | <= DISPATCH_LEVEL |