Функция FwpsInjectionHandleCreate0 (fwpsk.h)
Функция FwpsInjectionHandleCreate0 создает дескриптор, который может использоваться функциями внедрения пакетов для внедрения пакетов или потоковой передачи данных в сетевой стек TCP/IP, а также функцией FwpsQueryPacketInjectionState0 для запроса состояния внедрения пакета.
Синтаксис
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.
Код возврата | Описание |
---|---|
|
Дескриптор внедрения успешно создан. |
|
Сетевой стек 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