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 입니다. 버퍼의 크기는 BytesNeeded 에 지정된 바이트 수보다 크거나 같아야 합니다. 이 값이 NULL이 아니고 요청된 데이터가 연속되지 않으면 NDIS는 요청된 데이터를 Storage 로 표시된 영역에 복사합니다.

[in] AlignMultiple

2의 힘으로 표현된 맞춤 배수입니다. 예: 2, 4, 8, 16 등 AlignMultiple이 1이면 맞춤 요구 사항이 없습니다.

[in] AlignOffset

정렬 배수의 오프셋(바이트)입니다.

반환 값

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

NetBuffer 매개 변수가 가리키는 NET_BUFFER 구조체의 NET_BUFFER_DATA 구조체의 DataLength 멤버가 BytesNeeded 매개 변수의 값보다 작으면 반환 값은 NULL입니다.

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

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

설명

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

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

요구 사항

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

추가 정보

NET_BUFFER

NET_BUFFER_DATA