다음을 통해 공유


NdisGetDataBuffer 함수(ndis/nblapi.h)

NdisGetDataBuffer 함수를 호출하여 NET_BUFFER 구조에서 연속된 데이터 블록에 액세스합니다.

통사론

NDIS_EXPORTED_ROUTINE PVOID NdisGetDataBuffer(
  [in]           NET_BUFFER *NetBuffer,
  [in]           ULONG      BytesNeeded,
  [in, optional] PVOID      Storage,
  [in]           ULONG      AlignMultiple,
  [in]           ULONG      AlignOffset
);

매개 변수

[in] NetBuffer

NET_BUFFER 구조체에 대한 포인터입니다.

[in] BytesNeeded

요청된 데이터의 연속 바이트 수입니다.

[in, optional] Storage

버퍼에 대한 포인터이거나, 호출자가 버퍼를 제공하지 않으면 NULL . 버퍼는 BytesNeed 지정된 바이트 수보다 크거나 같아야 합니다. 이 값이NULL이 아닌요청된 데이터가 연속되지 않으면 NDIS는 요청된 데이터를 Storage 표시된 영역에 복사합니다.

[in] AlignMultiple

2의 권능으로 표현된 맞춤 배수입니다. 예를 들어 2, 4, 8, 16 등이 있습니다. AlignMultiple 1이면 맞춤 요구 사항이 없습니다.

[in] AlignOffset

맞춤 배수의 오프셋(바이트)입니다.

반환 값

NdisGetDataBuffer 연속 데이터의 시작 부분에 대한 포인터를 반환하거나 NULL 반환합니다.

NetBuffer 매개 변수가 가리키는 NET_BUFFERNET_BUFFER_DATA 구조체의 DataLength 멤버가 BytesNeed 매개 변수의 값보다 작으면 반환 값은 NULL .

버퍼의 요청된 데이터가 연속된 경우 반환 값은 NDIS에서 제공하는 위치에 대한 포인터입니다. 데이터가 연속되지 않으면 NDIS는 다음과 같이 Storage 매개 변수를 사용합니다.

  • Storage 매개 변수가 NULL경우 NDIS는 Storage버퍼에 데이터를 복사합니다. 반환 값은 Storage 매개 변수에 전달되는 포인터입니다.
  • Storage 매개 변수가 NULL 경우 반환 값은 NULL .
반환 값은 데이터 버퍼를 매핑할 수 없는 리소스 조건이 낮기 때문에 NULL 수 있습니다. 데이터가 연속적이거나 Storage 매개 변수가NULL경우에도 발생할 수 있습니다.

발언

이 함수를 호출하여 NET_BUFFER 구조에 포함된 네트워크 데이터 헤더에 대한 포인터를 가져옵니다. 이 함수가 반환하는 연속 데이터 블록에 저장된 헤더를 쉽게 구문 분석할 수 있습니다.

요청된 맞춤 요구 사항은 power-of-two 다중 및 오프셋으로 표현됩니다. 예를 들어 AlignMultiple 4이고 AlignOffset 3이면 데이터 주소는 4+ 3의 배수여야 합니다. 필요한 경우 NDIS는 맞춤 요구 사항을 충족하기 위해 메모리를 할당합니다.

요구 사항

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

참고 항목

NET_BUFFER

NET_BUFFER_DATA