FwpsInjectionHandleCreate0 함수(fwpsk.h)

FwpsInjectionHandleCreate0 함수는 패킷 삽입 함수에서 패킷 또는 스트림 데이터를 TCP/IP 네트워크 스택에 삽입하고 FwpsQueryPacketInjectionState0 함수에서 패킷 삽입 상태를 쿼리하는 데 사용할 수 있는 핸들을 만듭니다.

참고FwpsInjectionHandleCreate0특정 버전의 FwpsInjectionHandleCreate입니다. 자세한 내용은 WFP 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 연산과 결합합니다. 플래그 값이 0으로 설정된 경우 결과 삽입 핸들을 전송, 스트림 및 정방향 삽입에 사용할 수 있습니다.

[out] injectionHandle

핸들을 수신하는 변수에 대한 포인터입니다.

반환 값

FwpsInjectionHandleCreate0 함수는 다음 NTSTATUS 코드 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS
삽입 핸들이 성공적으로 만들어졌습니다.
STATUS_FWP_TCPIP_NOT_READY
TCP/IP 네트워크 스택이 준비되지 않았습니다. 설명선 드라이버는 나중에 FwpsInjectionHandleCreate0 함수를 다시 호출하여 삽입 핸들을 만들어야 합니다.
기타 상태 코드
오류가 발생했습니다.

설명

설명선 드라이버는 FwpsInjectionHandleCreate0 함수를 호출하여 패킷 또는 스트림 데이터를 TCP/IP 네트워크 스택에 삽입하고 패킷 삽입 상태를 쿼리하는 데 사용할 수 있는 핸들을 만듭니다. 설명선 드라이버는 생성된 핸들을 패킷 삽입 함수 에 전달하고 FwpsQueryPacketInjectionState0.

설명선 드라이버가 삽입 핸들 사용을 완료한 후 FwpsInjectionHandleDestroy0 함수를 호출하여 핸들을 삭제해야 합니다. 보류 중인 삽입이 아직 완료되지 않은 경우 이 함수는 반환하기 전에 완료될 때까지 기다립니다.

네트워크 계층에 삽입이 수행되고 IPv4 및 IPv6 주소 패밀리가 모두 필터링되는 경우 설명선 드라이버는 FwpsInjectionHandleCreate0 함수를 두 번 호출하여 두 개의 삽입 핸들을 만들어야 합니다. 하나는 addressFamily 가 AF_INET 설정되고 addressFamily 가 AF_INET6 설정된 두 번째 호출입니다.

MAC 계층(*MAC_FRAME_NATIVE, *MAC_FRAME_ETHERNET, *VSWITCH_ETHERNET)의 경우 FWPS_INJECTION_TYPE_L2 플래그와 함께 획득한 것과 동일한 삽입 핸들을 사용할 수 있습니다. 삽입 형식은 레이어보다 삽입 함수에 더 가깝습니다.

코드 예제는 WFPSampler HelperFunctions_InjectionData.cpp 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 fwpsk.h(Fwpsk.h 포함)
라이브러리 Fwpkclnt.lib
IRQL PASSIVE_LEVEL

추가 정보

FwpsInjectionHandleDestroy0

FwpsQueryPacketInjectionState0

패킷 삽입 함수