NdisAllocateCloneNetBufferList 함수(ndis/nblapi.h)

NdisAllocateCloneNetBufferList 함수를 호출하여 새 클론 NET_BUFFER_LIST 구조를 만듭니다.

구문

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateCloneNetBufferList(
  [in]           NET_BUFFER_LIST *OriginalNetBufferList,
  [in, optional] NDIS_HANDLE     NetBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     NetBufferPoolHandle,
  [in]           ULONG           AllocateCloneFlags
);

매개 변수

[in] OriginalNetBufferList

기존 NET_BUFFER_LIST 구조체에 대한 포인터입니다.

[in, optional] NetBufferListPoolHandle

에 대한 호출에서 가져온 핸들입니다. NdisAllocateNetBufferListPool 함수입니다.

[in, optional] NetBufferPoolHandle

에 대한 호출에서 이전에 반환된 NET_BUFFER 구조체 풀 핸들 NdisAllocateNetBufferPool.

[in] AllocateCloneFlags

OR 작업과 결합할 수 있는 NDIS 플래그입니다. 다음 플래그가 정의됩니다.

NDIS_CLONE_FLAGS_RESERVED

NDIS용으로 예약되었습니다.

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

이 플래그가 설정되면 NDIS는 복제된 NET_BUFFER_LIST 대한 새 MDL을 할당하지 않습니다. 대신 복제된 NET_BUFFER_LIST 원래NET_BUFFER_LIST 동일한 MDL 체인을 사용합니다. NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS 지워지면 NDIS는 원래 데이터 버퍼를 참조하는 새 MDL을 할당합니다.

반환 값

NdisAllocateCloneNetBufferList 는 새 클론 NET_BUFFER_LIST 구조체에 대한 포인터를 반환합니다. 할당에 실패한 경우 이 포인터는 NULL입니다.

설명

NdisAllocateCloneNetBufferList를 호출하여 별도의 데이터 경로에 중복 데이터를 보내는 데 사용할 수 있는 복제 NET_BUFFER_LIST 구조를 만듭니다.

원래 NET_BUFFER_LIST 구조의 각 NET_BUFFER 구조는 전체 데이터 공간의 시작이 아니라 사용된 데이터 공간의 시작부터만 복제됩니다. 데이터 공간의 시작부터 사용된 데이터 공간의 시작까지 오프셋을 얻으려면 NET_BUFFER_DATA_OFFSET 매크로를 사용합니다.

복제된 NET_BUFFER_LIST 구조에 지정된 풀과 연결된 특성이 있어야 하는 경우 호출자는 NetBufferListPoolHandle 또는 NetBufferPoolHandle 매개 변수에서 풀 핸들 지정해야 합니다. 예를 들어 NET_BUFFER_LIST 구조체의 ProtocolType 멤버는 풀과 연결됩니다.

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

다음을 호출합니다. NdisFreeCloneNetBufferList 함수는 NET_BUFFER_LIST 구조체와 NdisAllocateCloneNetBufferList를 호출하여 할당된 모든 관련 구조체 및 MDL 체인을 해제합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 유니버설
헤더 ndis/nblapi.h(include ndis.h)
라이브러리 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 Irql_NetBuffer_Function(ndis), NdisAllocateCloneNetBufferList(ndis), NdisAllocateCloneNetBufferList_InitFail(ndis)

추가 정보

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList