다음을 통해 공유


KsAllocateExtraData 함수(ks.h)

KsAllocateExtraData 함수는 스트리밍 IRP와 함께 사용되어 추가 헤더 데이터를 포함하는 버퍼를 할당합니다. 할당된 버퍼에 대한 포인터가 반환되고 결국 호출자가 버퍼를 해제해야 합니다.

통사론

KSDDKAPI NTSTATUS KsAllocateExtraData(
  [in, out] PIRP  Irp,
  [in]      ULONG ExtraSize,
  [out]     PVOID *ExtraBuffer
);

매개 변수

[in, out] Irp

스트림 헤더를 포함하는 IRP를 지정합니다. 헤더를 버퍼링하려면 이전에 KsProbeStreamIrp IRP를 전달해야 합니다.

[in] ExtraSize

각 스트림 헤더 간에 할당할 추가 메모리의 크기(바이트)를 지정합니다. 이 값 8 바이트 경계에서 정렬할 수 합니다. 헤더의 복사본은 반환된 버퍼에 배치되며 각 헤더 사이에 추가 데이터 크기가 삽입됩니다. 호출자가 해제해야 합니다.

[out] ExtraBuffer

성공적으로 완료될 때 스트림 헤더와 해당 헤더 간의 요청된 패딩을 포함하는 시스템 할당 버퍼를 가리키는 호출자 할당 포인터를 가리킵니다. 호출자가 해제해야 합니다.

반환 값

KsAllocateExtraData 함수는 성공하면 STATUS_SUCCESS 반환하거나 리소스 또는 액세스 오류를 반환합니다.

발언

KsAllocateExtraData 성공적으로 완료되면 IRP의 스트림 데이터 헤더( Irp지정됨) 및 ExtraSize지정된 크기의 각 헤더 사이에 패딩을 포함하는 메모리 블록에 대한 포인터가 반환됩니다. 이러한 결과 버퍼의 예는 다음과 같습니다.

결과 버퍼를 보여 주는 다이어그램

추가 버퍼가 더 이상 필요하지 않은 경우 ExFreePool사용하여 메모리를 해제해야 합니다.

요구 사항

요구
대상 플랫폼 보편적
헤더 ks.h(Ks.h 포함)
라이브러리 Ks.lib
IRQL < DISPATCH_LEVEL