NdisAllocateNetBufferPool 함수(ndis/nblapi.h)

NdisAllocateNetBufferPool 함수를 호출하여 NET_BUFFER 구조체 풀을 할당합니다.

구문

NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferPool(
  [in, optional] NDIS_HANDLE                      NdisHandle,
  [in]           NET_BUFFER_POOL_PARAMETERS const *Parameters
);

매개 변수

[in, optional] NdisHandle

호출자 초기화 중에 가져온 NDIS 핸들입니다.

[in] Parameters

풀의 매개 변수를 정의하는 NET_BUFFER_POOL_PARAMETERS 구조체에 대한 포인터입니다. 구조체는 다음과 같이 정의됩니다.

typedef struct _NET_BUFFER_POOL_PARAMETERS {
  NDIS_OBJECT_HEADER  Header;
  ULONG  PoolTag;
  ULONG  DataSize;
} NET_BUFFER_POOL_PARAMETERS, *PNET_BUFFER_POOL_PARAMETERS;

이 구조체에는 다음 멤버가 포함됩니다.

NET_BUFFER_POOL_PARAMETERS 구조체의 NDIS_OBJECT_HEADER 구조체입니다. Header가 지정하는 구조체의 Type 멤버를 NDIS_OBJECT_TYPE_DEFAULT, Revision 멤버를 NET_BUFFER_POOL_PARAMETERS_REVISION_1, Size 멤버를 NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1 설정합니다.

PoolTag

호출자가 이 풀에서 NET_BUFFER 구조를 할당할 때 사용하는 커널 풀 태그입니다. 태그는 작은따옴표로 구분된 문자열로, 일반적으로 역순으로 지정되는 최대 4자입니다. 커널 풀 태그는 NDIS가 이 풀에서 할당된 NET_BUFFER 구조체의 소유자를 식별하는 데 도움이 됩니다.

DataSize

이 풀과 연결된 데이터 버퍼의 기본 데이터 크기입니다. 호출자는 를 호출하는 경우 이 값을 설정해야 합니다. NdisAllocateNetBufferMdlAndData 함수입니다. NDIS는 이 값을 사용하여 NET_BUFFER 구조에 할당하는 데이터 버퍼의 크기를 설정합니다. 호출자가 이 기능을 사용하지 않는 경우 이 값을 0으로 설정해야 합니다.

반환 값

NdisAllocateNetBufferPool 은 NDIS가 할당하는 NET_BUFFER 구조체 풀에 대한 핸들을 반환합니다. 할당에 실패한 경우 이 핸들은 NULL입니다. 이 핸들은 이 풀에서 NET_BUFFER 구조를 할당하고 해제하는 NDIS 함수에 대한 후속 호출에 필요한 매개 변수입니다.

설명

다음 함수를 호출하여 NET_BUFFER 구조체 풀에서 NET_BUFFER 구조를 할당합니다.

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
NET_BUFFERNET_BUFFER_LIST 구조체는 NDIS 버퍼 풀에서 할당해야 합니다. 드라이버는 프라이빗 메모리 풀 또는 스택에서 NET_BUFFER 또는 NET_BUFFER_LIST 구조를 할당하고 초기화해서는 안됩니다.
 
NdisAllocateNetBufferPool을 호출하고 NET_BUFFER 구조체 풀을 만들 때 DataSize 값을 설정할 수 있습니다. 이 경우 MDL 및 데이터는 호출자가 풀에서 할당하는 각 NET_BUFFER 구조로 미리 할당됩니다. 이러한 풀에서 NET_BUFFER 구조를 할당하려면 NdisAllocateNetBufferMdlAndData 함수를 호출해야 합니다.

NdisAllocateNetBufferMdlAndData와 함께 할당된 MDL 및 데이터 버퍼는 NET_BUFFER 구조와 별도로 해제되어서는 안 됩니다. 이러한 구조체는 NdisFreeNetBuffer 함수를 호출할 때 NET_BUFFER 구조체로 해제됩니다.

NdisAllocateNetBufferPool을 사용하여 만든 NET_BUFFER 구조 풀을 해제하려면 NdisFreeNetBufferPool 함수를 호출합니다.

요구 사항

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

추가 정보

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool