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