FwpsAllocateCloneNetBufferList0 함수(fwpsk.h)

FwpsAllocateCloneNetBufferList0 함수는 기존 NET_BUFFER_LIST 구조체의 복제본인 NET_BUFFER_LIST 구조를 할당합니다.

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

구문

NTSTATUS FwpsAllocateCloneNetBufferList0(
  [in, out]      NET_BUFFER_LIST *originalNetBufferList,
  [in, optional] NDIS_HANDLE     netBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     netBufferPoolHandle,
  [in]           ULONG           allocateCloneFlags,
  [out]          NET_BUFFER_LIST **netBufferList
);

매개 변수

[in, out] originalNetBufferList

복제되는 원래 NET_BUFFER_LIST 구조체에 대한 포인터입니다.

[in, optional] netBufferListPoolHandle

에 대한 이전 호출에서 가져온 NET_BUFFER_LIST 풀 핸들 NdisAllocateNetBufferListPool 함수입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

[in, optional] netBufferPoolHandle

NdisAllocateNetBufferPool 함수에 대한 이전 호출에서 가져온 NET_BUFFER 풀 핸들입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

[in] allocateCloneFlags

현재 이 함수에 대해 정의된 플래그가 없습니다. 콜아웃 드라이버는 이 매개 변수를 0으로 설정해야 합니다.

[out] netBufferList

복제본 NET_BUFFER_LIST 구조체에 대한 포인터를 수신하는 변수에 대한 포인터입니다.

반환 값

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

반환 코드 설명
STATUS_SUCCESS
복제본 NET_BUFFER_LIST 구조체가 성공적으로 할당되었습니다.
기타 상태 코드
오류가 발생했습니다.

설명

설명선 드라이버는 FwpsAllocateCloneNetBufferList0 함수를 호출하여 기존 NET_BUFFER_LIST 구조체의 복제 NET_BUFFER_LIST 구조를 할당합니다.

이 함수는 에 대한 래퍼입니다. NdisAllocateCloneNetBufferList 함수이지만 WFP 패킷 삽입 함수에서 사용하기 위해 특수 화되어 있습니다.

복제 NET_BUFFER_LIST 구조에 특정 풀과 연결된 특성이 있어야 하는 경우 설명선 드라이버는 NetBufferListPoolHandle 또는 NetBufferPoolHandle 매개 변수에서 풀 핸들을 지정해야 합니다. 이러한 매개 변수가 NULL인 경우 NDIS가 미리 할당한 기본 풀이 사용됩니다.

복제 NET_BUFFER_LIST 구조체는 원래 NET_BUFFER_LIST 구조체에서 설명하는 것과 동일한 데이터를 설명합니다. FwpsAllocateCloneNetBufferList0 함수는 원래 MDL에서 설명하는 데이터를 새 데이터 버퍼에 복사하지 않습니다. 대신 복제 NET_BUFFER_LIST 구조체는 원래 데이터 버퍼를 참조합니다. 복제 NET_BUFFER_LIST 구조체에는 초기 항목이 포함되지 않습니다. NET_BUFFER_LIST_CONTEXT 구조체입니다.

이 함수는 부모 NET_BUFFER_LIST 구조를 가리키도록 새로 만든 클론 NET_BUFFER_LIST 구조체의 ParentNetBufferList 멤버를 설정합니다. 부모 구조체의 ChildRefCount 멤버는 1씩 증가합니다.

설명선 드라이버는 패킷 삽입 함수를 호출하여 복제 NET_BUFFER_LIST 구조를 수정하고 원래 NET_BUFFER_LIST 구조 대신 네트워크 스택에 삽입할 수 있습니다. 복제 NET_BUFFER_LIST 구조에서 설명하는 데이터가 네트워크 스택에 성공적으로 삽입된 후 설명선 드라이버는 FwpsFreeCloneNetBufferList0 함수를 호출하여 복제 NET_BUFFER_LIST 구조를 해제합니다.

설명선 드라이버는 복제 순 버퍼 목록 내에서 개별 순 버퍼(NET_BUFFER) 또는 MDL을 삽입하거나 바꿀 수 있습니다. 또한 이러한 드라이버는 를 호출하기 전에 수정 사항을 실행 취소해야 합니다. FwpsFreeCloneNetBufferList0 함수입니다.

복제된 패킷을 관리하기 위한 지침

설명선 드라이버는 복제된 패킷을 무기한 보유해서는 안 됩니다. 복제된 패킷은 유휴 컴퓨터에서 전원 관리 작업을 방해할 수 있습니다.

WFP에서 복제된 패킷에 대한 용도는 사용자 모드 애플리케이션 또는 기타 비교적 빠른 작업에서 설명을 가져오는 것입니다. 예를 들어 사용자 입력을 기다리거나 웹 서비스 정리를 기다리거나 임의 시간이 걸릴 수 있는 다른 작업을 기다리는 동안 설명선 드라이버는 복제된 패킷을 보유하지 않아야 합니다.

콜아웃 드라이버가 잠재적으로 긴 작업을 기다려야 하는 경우 를 사용하여 패킷의 심층 복사본을 만듭니다. FwpsAllocateNetBufferAndNetBufferList0이며 원래 패킷을 차단하고 흡수합니다.

설명선 드라이버는 항상 가능한 한 빨리 저장된 패킷을 반환해야 합니다.

요구 사항

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

추가 정보

FwpsFreeCloneNetBufferList0

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

패킷 삽입 함수