NdisAllocateNetBufferListContext 함수(ndis/nblapi.h)

NdisAllocateNetBufferListContext 함수를 호출하여 의 NET_BUFFER_LIST_CONTEXT 구조에 더 많은 컨텍스트 공간을 할당합니다.

NET_BUFFER_LIST 구조체입니다.

구문

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisAllocateNetBufferListContext(
  [in] NET_BUFFER_LIST *NetBufferList,
  [in] USHORT          ContextSize,
  [in] USHORT          ContextBackFill,
  [in] ULONG           PoolTag
);

매개 변수

[in] NetBufferList

이전에 할당된 NET_BUFFER_LIST 구조체에 대한 포인터입니다.

[in] ContextSize

NET_BUFFER_LIST_CONTEXT 구조에 할당할 컨텍스트 공간의 양입니다. 이 크기는 에 정의된 sizeof(void*)값의 배수여야 합니다.

[in] ContextBackFill

NDIS가 요청을 충족하기 위해 메모리를 할당해야 하는 경우 할당할 ContextSize 값 외에 메모리 양입니다. 이 크기는 에 정의된 sizeof(void*)값의 배수여야 합니다.

[in] PoolTag

할당이 필요한 경우 NDIS가 NET_BUFFER_LIST_CONTEXT 구조에 대한 메모리를 할당하는 데 사용하는 커널 풀 태그입니다. 태그는 작은따옴표로 구분된 문자열로, 일반적으로 역순으로 지정된 최대 4자입니다. 커널 풀 태그는 NDIS가 메모리 소유자를 식별하는 데 도움이 됩니다.

반환 값

NdisAllocateNetBufferListContext 는 다음 중 하나를 반환합니다.

반환 코드 설명
NDIS_STATUS_SUCCESS
NdisAllocateNetBufferListContext 는 NET_BUFFER_LIST_CONTEXT 구조체의 Offset 멤버 값을 줄이거나 새 메모리를 할당하여 컨텍스트 공간을 성공적으로 할당했습니다.
NDIS_STATUS_RESOURCES
리소스가 부족하여 NdisAllocateNetBufferListContext가 실패했습니다.
NDIS_STATUS_FAILURE
리소스 부족 이외의 이유로 NdisAllocateNetBufferListContext 가 실패했습니다.

설명

요청을 충족하기 위해 NET_BUFFER_LIST_CONTEXT 구조에서 사용할 수 있는 사용되지 않는 컨텍스트 공간이 충분한 경우 NdisAllocateNetBufferListContext 는 NET_BUFFER_LIST_CONTEXT 구조체에서 Offset 멤버의 값을 줄입니다. 그렇지 않으면 NDIS는 컨텍스트 공간에 새 메모리를 할당합니다. NdisAllocateNetBufferListContext에 대한 다음 호출에서 메모리를 할당할 필요가 없도록 ContextBackFill을 지정하여 추가 메모리를 할당할 수 있습니다.

참고 컨텍스트 공간은 항상 'sizeof(void*)'에 맞춰집니다. 이는 모든 자연 형식에 적합한 맞춤이지만 SLIST_ENTRY 같은 비정상적인 맞춤 요구 사항이 있는 데이터 형식에는 적합하지 않습니다.

다음을 호출합니다. NdisAllocateNetBufferListContext 와 함께 할당된 NET_BUFFER_LIST_CONTEXT 구조체의 컨텍스트 공간을 해제하는 NdisFreeNetBufferListContext 함수입니다.

요구 사항

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

추가 정보

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisFreeNetBufferListContext