다음을 통해 공유


NdisRetreatNetBufferDataStart 함수(ndis/nblapi.h)

NdisRetreatNetBufferDataStart 함수를 호출하여 NET_BUFFER 구조의 MDL 체인에서 더 많이 사용되는 데이터 공간에 액세스합니다.

구문

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferDataStart(
  [in]           NET_BUFFER              *NetBuffer,
  [in]           ULONG                   DataOffsetDelta,
  [in]           ULONG                   DataBackFill,
  [in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler
);

매개 변수

[in] NetBuffer

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

[in] DataOffsetDelta

추가할 사용된 데이터 공간 의 양입니다. NDIS는 그에 따라 NET_BUFFER 구조체의 DataOffset 멤버를 조정합니다. 요청을 충족하는 데 사용되지 않는 데이터 공간이 충분하지 않은 경우 NDIS는 추가 메모리를 할당합니다.

[in] DataBackFill

NDIS가 메모리를 할당해야 하는 경우 이 매개 변수는 할당할 DataOffsetDelta 매개 변수 값 외에도 데이터 공간의 양을 지정합니다.

[in, optional] AllocateMdlHandler

NetAllocateMdl 함수에 대한 선택적 진입점입니다. 호출자가 NetAllocateMdl 함수의 진입점을 지정하는 경우 NDIS는 NetAllocateMdl 을 호출하여 MDL 및 메모리를 할당합니다.

반환 값

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

반환 코드 설명
NDIS_STATUS_SUCCESS
NdisRetreatNetBufferDataStart 는 사용되지 않는 데이터 공간을 사용하거나 새 스토리지를 할당하여 사용된 데이터 공간을 성공적으로 할당했습니다.
NDIS_STATUS_RESOURCES
리소스 부족으로 인해 NdisRetreatNetBufferDataStart 가 실패했습니다.
NDIS_STATUS_FAILURE
리소스 부족 이외의 이유로 NdisRetreatNetBufferDataStart 가 실패했습니다.

설명

NdisRetreatNetBufferDataStartNET_BUFFER 구조체의 DataOffset 멤버 값을 줄여 요청을 충족하려고 시도합니다.

사용하지 않는 데이터 공간이 충분하지 않은 경우 이 함수는 새 버퍼를 설명하는 새 버퍼와 MDL을 할당하고 새 MDL을 MDL 체인의 시작 부분에 연결합니다. NDIS는 AllocateMdl에 지정된 NetAllocateMdl 함수를 호출하여 MDL 및 메모리를 할당합니다. NetAllocateMdl 함수는 드라이버의 디자인 요구 사항을 충족하는 할당 방법을 사용할 수 있습니다.

다음을 호출합니다. NdisAdvanceNetBufferDataStart 함수는 NdisRetreatNetBufferDataStart와 함께 추가된 사용된 데이터 공간을 해제합니다.

요구 사항

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

추가 정보

NET_BUFFER

NdisAdvanceNetBufferDataStart

NetAllocateMdl