Поделиться через


Функция FwpsInjectionHandleCreate0 (fwpsk.h)

Функция FwpsInjectionHandleCreate0 создает дескриптор, который может использоваться функциями внедрения пакетов для внедрения пакетов или потоковой передачи данных в сетевой стек TCP/IP, а также функцией FwpsQueryPacketInjectionState0 для запроса состояния внедрения пакета.

ПримечаниеFwpsInjectionHandleCreate0 — это определенная версия FwpsInjectionHandleCreate. Дополнительные сведения см. в разделах Имена Version-Independent и Выбор конкретных версий Windows .
 

Синтаксис

NTSTATUS FwpsInjectionHandleCreate0(
  [in, optional] ADDRESS_FAMILY addressFamily,
  [in]           UINT32         flags,
  [out]          HANDLE         *injectionHandle
);

Параметры

[in, optional] addressFamily

Семейство адресов, для которого создается дескриптор внедрения. Это может быть одно из следующих семейств адресов:

AF_UNSPEC

Семейство адресов не указано.

AF_INET

Семейство адресов IPv4.

AF_INET6

Семейство адресов IPv6.

Для транспортных, потоковых и прямого внедрения этот параметр является необязательным и может иметь значение AF_UNSPEC, что указывает на неуказавшееся семейство адресов. Это значение определено в Ws2def.h.

[in] flags

Значение флага, заданное драйвером выноски для указания типа внедряемых данных. Этот флаг может иметь одно или несколько из следующих значений:

FWPS_INJECTION_TYPE_FORWARD

Пакетные данные будут внедрены путем вызоваФункция FwpsInjectForwardAsync0.

FWPS_INJECTION_TYPE_NETWORK

Сетевые данные будут внедрены путем вызова Функция FwpsInjectNetworkReceiveAsync0 илиФункция FwpsInjectNetworkSendAsync0.

FWPS_INJECTION_TYPE_STREAM

Stream данные будут внедрены путем вызоваФункция FwpsStreamInjectAsync0.

FWPS_INJECTION_TYPE_TRANSPORT

Данные транспорта будут внедрены путем вызова Функция FwpsInjectTransportReceiveAsync0 илиФункция FwpsInjectTransportSendAsync0.

Чтобы создать дескриптор внедрения, который будет использоваться несколькими функциями внедрения, объедините биты типа внедрения с побитовыми операциями OR. Если значение флага равно нулю, результирующий дескриптор внедрения можно использовать для транспортных, потоковых и прямого внедрения.

[out] injectionHandle

Указатель на переменную, получающую дескриптор.

Возвращаемое значение

Функция FwpsInjectionHandleCreate0 возвращает один из следующих кодов NTSTATUS.

Код возврата Описание
STATUS_SUCCESS
Дескриптор внедрения успешно создан.
STATUS_FWP_TCPIP_NOT_READY
Сетевой стек TCP/IP не готов. Драйвер выноски должен снова вызвать функцию FwpsInjectionHandleCreate0 позже, чтобы создать дескриптор внедрения.
Другие коды состояния
Произошла ошибка.

Комментарии

Драйвер выноски вызывает функцию FwpsInjectionHandleCreate0 , чтобы создать дескриптор, который можно использовать для внедрения пакетов или потоковой передачи данных в сетевой стек TCP/IP и для запроса состояния внедрения пакетов. Драйвер выноски передает созданный дескриптор функциям внедрения пакетов и FwpsQueryPacketInjectionState0.

После завершения работы драйвера выноски с помощью дескриптора внедрения он должен вызвать функцию FwpsInjectionHandleDeким0 , чтобы уничтожить дескриптор. Если ожидающие внедрения еще не завершены, эта функция будет ожидать их завершения перед возвратом.

При внедрении на сетевой уровень и фильтрации семейств адресов IPv4 и IPv6 драйвер выноски должен создать два дескриптора внедрения, дважды вызвав функцию FwpsInjectionHandleCreate0 : один вызов с параметром addressFamily для AF_INET, а второй вызов с параметром addressFamily , для AF_INET6.

Для слоев MAC ( *MAC_FRAME_NATIVE, *MAC_FRAME_ETHERNET, *VSWITCH_ETHERNET) можно использовать тот же дескриптор внедрения, полученный с флагом FWPS_INJECTION_TYPE_L2. Тип внедрения привязан ближе к функциям внедрения, чем слои.

Пример кода см. в разделе HELPERFUNCTIONS_INJECTIONDATA.CPP ПППП.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows Vista.
Целевая платформа Универсальное
Верхняя часть fwpsk.h (включая Fwpsk.h)
Библиотека Fwpkclnt.lib
IRQL PASSIVE_LEVEL

См. также раздел

FwpsInjectionHandleDeкистрация0

FwpsQueryPacketInjectionState0

Функции внедрения пакетов