FwpsPendOperation0 함수(fwpsk.h)

FwpsPendOperation0 함수는 설명선에 의해 호출되어 다른 작업이 완료될 때까지 패킷 처리를 일시 중단합니다.

참고FwpsPendOperation0특정 버전의 FwpsPendOperation입니다. 자세한 내용은 WFP Version-Independent 이름 및 특정 버전의 Windows 대상 지정 을 참조하세요.
 

구문

NTSTATUS FwpsPendOperation0(
  [in]  HANDLE completionHandle,
  [out] HANDLE *completionContext
);

매개 변수

[in] completionHandle

현재 필터링 작업을 보류하는 데 필요한 완료 핸들입니다. 이 매개 변수는 설명선 드라이버의 classifyFn 함수에 전달된 FWPS_INCOMING_METADATA_VALUES0 구조체의 completionHandle 멤버에서 가져옵니다.

[out] completionContext

이 보류 중인 작업의 완료 컨텍스트에 대한 핸들입니다. 설명선이 패킷 처리를 다시 시작할 준비가 되면 이 매개 변수의 값을 input completionContext 매개 변수로 사용하여 FwpsCompleteOperation0 함수를 호출합니다.

반환 값

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

반환 코드 설명
STATUS_SUCCESS
패킷 처리가 성공적으로 보류되었습니다.
STATUS_FWP_CANNOT_PEND
재인증 분류 작업에서 FwpsPendOperation0 에 대한 호출이 수행되었습니다. 자세한 내용은 설명 부분을 참조하세요.
STATUS_FWP_NULL_POINTER
하나 이상의 매개 변수가 잘못되었습니다.
STATUS_FWP_TCPIP_NOT_READY
TCP/IP 네트워크 스택이 이 작업을 허용할 준비가 되지 않았습니다.
기타 상태 코드
오류가 발생했습니다.

설명

설명선은 패킷 처리를 다시 시작할 때까지 completionContext 매개 변수 값을 유지해야 합니다. 이 함수에 대한 호출을 묻는 작업이 완료되면 설명선은 FwpsCompleteOperation0 함수를 호출하여 completionContext 매개 변수 값을 전달해야 합니다.

설명선은 FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_ Xxx, FWPM_LAYER_ALE_AUTH_LISTEN_ Xxx 또는 FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx필터링 계층에서 시작된 패킷을 보류하는 경우에만 이 함수를 호출할 수 있습니다. 설명선이 완료하는 데 긴 간격이 걸리거나 현재 IRQL > 이 PASSIVE_LEVEL 경우 IRQL = PASSIVE_LEVEL 발생해야 하는 이러한 계층 중 하나에서 처리를 수행해야 하는 경우 설명선은 패킷에서 현재 처리 작업을 보류할 수 있습니다.

FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx 계층에서 이전에 보류되었던 연결을 완료하려면 설명선 드라이버가 해당 계층에서 복제된 패킷을 다시 내보내고 FwpsCompleteOperation0 함수를 호출해야 합니다.

패킷 처리를 보류하려면 설명선 드라이버의 classifyFn 함수가 FWPS_CLASSIFY_OUT0 구조의 actionType 멤버를 FWP_ACTION_BLOCK플래그 멤버를 FWPS_CLASSIFY_OUT_FLAG_ABSORB 설정해야 합니다.

FwpsCompleteOperation0 함수가 실행된 후 보류 중인 연결이 다시 인증됩니다. 허용되는 경우 TCP 연결은 핸드셰이크 작업을 완료하여 생성되지만 TCP가 아닌 연결은 상태 항목만 만듭니다. FwpsPendOperation0 함수가 완료되면 보류 중인 패킷 데이터가 메모리에서 플러시되므로 애플리케이션은 FwpsCompleteOperation0이 실행된 후 해당 패킷을 다시 전송해야 합니다. 설명선은 이러한 데이터를 버퍼링하고 대신 데이터를 다시 생성할 수 있습니다.

FwpsPendOperation0 및 FwpsCompleteOperation0을 호출하여 초기 ALE(애플리케이션 계층 적용) 흐름 권한 부여만 연기할 수 있습니다. ALE 흐름이 다시 인증되면 FWP_CONDITION_FLAG_IS_REAUTHORIZE 플래그가 설정됩니다. FWP_CONDITION_FLAG_IS_REAUTHORIZE 플래그가 설정되고 STATUS_FWP_CANNOT_PEND 상태 코드가 반환되면 FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx 또는 FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx필터링 계층에서 FwpsPendOperation0에 대한 호출이 실패합니다. 자세한 내용은 Windows SDK의 ALE 재인증 을 참조하세요.

요구 사항

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

추가 정보

FWPS_CLASSIFY_OUT0

FWPS_INCOMING_METADATA_VALUES0

FwpsCompleteOperation0

classifyFn