다음을 통해 공유


KsAllocateExtraData 함수(ks.h)

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

구문

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

매개 변수

[in, out] Irp

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

[in] ExtraSize

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

[out] ExtraBuffer

호출자가 할당한 포인터를 가리키며, 성공적으로 완료되면 스트림 헤더와 그 사이에 요청된 패딩이 포함된 시스템 할당 버퍼를 가리킵니다. 호출자가 해제해야 합니다.

반환 값

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

설명

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

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

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

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ks.h(Ks.h 포함)
라이브러리 Ks.lib
IRQL < DISPATCH_LEVEL