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


Функция 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

Потоковые данные будут внедрены путем вызова функцию 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.

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

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

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

Пример кода см. в разделе ВППSampler HelperFunctions_InjectionData.cpp.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows Vista.
целевая платформа Всеобщий
заголовка fwpsk.h (include Fwpsk.h)
библиотеки Fwpkclnt.lib
IRQL PASSIVE_LEVEL

См. также

FwpsInjectionHandleDesk0

FwpsQueryPacketInjectionState0

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