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 구조를 할당합니다.
NdisAllocateNetBufferMdlAndDataNdisAllocateNetBufferMdlAndData와 함께 할당된 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) |