FWPS_CALLOUT2 구조체(fwpsk.h)

FWPS_CALLOUT2 구조는 설명선 드라이버가 필터 엔진에 설명선 등록에 필요한 데이터를 정의합니다.

FWPS_CALLOUT2 Windows 8 이상에서 사용되는 특정 버전의 FWPS_CALLOUT. 자세한 내용은 WFP Version-Independent 이름 및 특정 버전의 Windows 대상 지정 을 참조하세요. Windows 7의 경우 FWPS_CALLOUT1 사용할 수 있습니다. Windows Vista의 경우 FWPS_CALLOUT0 사용할 수 있습니다.

 

구문

typedef struct FWPS_CALLOUT2_ {
  GUID                                calloutKey;
  UINT32                              flags;
  FWPS_CALLOUT_CLASSIFY_FN2           classifyFn;
  FWPS_CALLOUT_NOTIFY_FN2             notifyFn;
  FWPS_CALLOUT_FLOW_DELETE_NOTIFY_FN0 flowDeleteFn;
} FWPS_CALLOUT2;

멤버

calloutKey

설명선이 고유하게 식별되는 설명선 드라이버 정의 GUID 입니다.

flags

설명선별 매개 변수를 지정하는 플래그입니다. 가능한 플래그는 다음과 같습니다.

의미
FWP_CALLOUT_FLAG_CONDITIONAL_ON_FLOW
0x00000001
설명선 드라이버는 데이터 흐름을 지원하는 계층에 추가될 설명선 등록 시 이 플래그를 지정할 수 있습니다. 이 플래그를 지정하면 필터 엔진은 데이터 흐름과 연결된 컨텍스트가 있는 경우에만 설명선 드라이버의 classifyFn2 설명선 함수를 호출합니다. 설명선 드라이버는 FwpsFlowAssociateContext0 함수를 호출하여 컨텍스트를 데이터 흐름과 연결합니다.
FWP_CALLOUT_FLAG_ALLOW_OFFLOAD
0x00000002
설명선 드라이버는 이 플래그를 지정하여 설명선 드라이버의 classifyFn2 설명선 함수가 네트워크 데이터 처리를 오프로드할 수 있는 NIC(네트워크 인터페이스 카드)로 오프로드하여 영향을 받지 않음을 나타냅니다. 이 플래그를 지정하지 않으면 필터 작업에 대한 설명선이 지정된 필터에서 처리되는 모든 트래픽에 대해 네트워크 데이터 처리의 오프로드가 비활성화됩니다.
FWP_CALLOUT_FLAG_ENABLE_COMMIT_ADD_NOTIFY
0x00000004
설명선 드라이버는 트랜잭션 내에 추가된 개체 및 필터에 대한 알림을 받을 수 있음을 나타내기 위해 이 플래그를 지정합니다. 필터 엔진은 트랜잭션이 커밋된 후 알림을 보냅니다.
FWP_CALLOUT_FLAG_ALLOW_MID_STREAM_INSPECTION
0x00000008
설명선 드라이버는 스트림 수준에서 데이터 흐름의 동적 스트림 검사를 수행할 수 있음을 나타내기 위해 이 플래그를 지정합니다. 스트림 검사를 참조하세요.
FWP_CALLOUT_FLAG_ALLOW_RECLASSIFY
0x00000010
설명선 드라이버는 기존 소켓 작업이 다시 분류될 때 호출되도록 자신을 등록하도록 이 플래그를 지정합니다.
FWP_CALLOUT_FLAG_RESERVED1
0x00000020
시스템에서 사용하도록 예약되었습니다. 설명선 드라이버는 이 플래그를 무시해야 합니다.
FWP_CALLOUT_FLAG_ALLOW_RSC
0x00000040
설명선 드라이버는 설명선이 최대 64K의 큰 패킷으로 TCP 수신 세그먼트 병합(RSC)을 지원함을 나타내기 위해 이 플래그를 지정합니다. 이 플래그를 지정하지 않고 설명선이 등록되면 필터 작업에 대한 설명선이 지정되는 필터에서 처리되는 모든 트래픽에 대해 RSC가 비활성화됩니다.
FWP_CALLOUT_FLAG_ALLOW_L2_BATCH_CLASSIFY
0x00000080
설명선 드라이버는 계층 2에 추가될 설명선 등록 시 이 플래그를 지정하여 classifyFn2 설명선 함수가 연결된 여러 NET_BUFFER_LIST 구조를 분류할 수 있음을 나타냅니다. 자세한 내용은 레이어 2 필터링 사용을 참조하세요.
주의  

설명선 드라이버가 이 플래그를 설정하는 경우 다음 함수를 사용하여 NET_BUFFER_LISTs 수정할 수 없습니다.

이 플래그를 설정하면 FwpsAllocateCloneNetBufferList0 에서 항상 INVALID_PARAMETER 오류를 반환합니다. 이로 인해 타사 설명선 드라이버가 NET_BUFFER_LISTs 참조 수를 관리하지 못해 송신 및 수신 작업이 중지될 수 있습니다.

FWP_CALLOUT_FLAG_ALLOW_USO
0x00000100
설명선 드라이버는 이 플래그를 지정하여 설명선이 네트워크 매체의 MTU보다 큰 패킷이 있는 UDP USO(구분 오프로드)를 지원함을 나타냅니다. 이 플래그를 지정하지 않고 설명선이 등록된 경우 필터 작업에 대한 설명선이 지정된 필터에서 처리되는 모든 트래픽에 대해 USO가 비활성화됩니다.
FWP_CALLOUT_FLAG_ALLOW_URO
0x00000200
설명선 드라이버는 설명선이 최대 64K의 큰 패킷으로 URO(UDP 수신 오프로드)를 지원함을 나타내기 위해 이 플래그를 지정합니다. 이 플래그를 지정하지 않고 설명선이 등록된 경우 필터 작업에 대한 설명선이 지정되는 필터에서 처리되는 모든 트래픽에 대해 URO가 비활성화됩니다.

classifyFn

설명선 드라이버의 classifyFn2 설명선 함수에 대한 포인터입니다. 필터 엔진은 설명선에서 처리할 네트워크 데이터가 있을 때마다 이 함수를 호출합니다.

notifyFn

설명선 드라이버의 notifyFn2 함수에 대한 포인터입니다. 필터 엔진은 이 함수를 호출하여 설명선 드라이버에 설명선과 연결된 이벤트에 대해 알립니다.

flowDeleteFn

설명선 드라이버의 flowDeleteFn 설명선 함수에 대한 포인터입니다. 필터 엔진은 설명선에 의해 처리되는 데이터 흐름이 종료될 때마다 이 함수를 호출합니다.

설명선 드라이버가 컨텍스트를 설명선이 처리하는 데이터 흐름과 연결하지 않으면 이 멤버를 NULL로 설정해야 합니다.

설명

설명선 드라이버는 필터 엔진에 설명선이 등록되면 초기화된 FWPS_CALLOUT2 구조체에 대한 포인터를 FwpsCalloutRegister2 함수에 전달합니다.

설명선은 드라이버가 스트림 검사를 수행하는 데 관심이 있는 연결에 대해서만 FWP_CALLOUT_FLAG_CONDITIONAL_ON_FLOW 플래그를 설정할 수 있습니다. 이 설명선은 다른 모든 연결에서 무시됩니다. 성능이 향상되고 드라이버가 불필요한 상태 데이터를 유지할 필요가 없습니다.

이 구조는 기본적으로 이전 버전인 FWPS_CALLOUT1 동일합니다. 유일한 차이점은 이 버전의 멤버가 설명선 함수 포인터의 업데이트된 버전을 저장하고 설명선 드라이버가 설정할 수 있는 추가 플래그를 사용할 수 있다는 것입니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 8 시작해서 사용할 수 있습니다.
헤더 fwpsk.h(Fwpsk.h 포함)

참고 항목

FWPS_CALLOUT0

FWPS_CALLOUT1

FwpsCalloutRegister2

계층 2 필터링 사용

classifyFn2

flowDeleteFn

notifyFn2