PFNKSALLOCATOR 콜백 함수(ks.h)

미니드라이버에서는 필요에 따라 KsEnableEventWithAllocator, KsPropertyHandlerWithAllocatorKsMethodHandlerWithAllocator 호출에서 PFNKSALLOCATOR 형식의 콜백 함수를 매개 변수로 제공할 수 있습니다.

구문

PFNKSALLOCATOR Pfnksallocator;

NTSTATUS Pfnksallocator(
  [in] PIRP Irp,
  [in] ULONG BufferSize,
  [in] BOOLEAN InputOperation
)
{...}

매개 변수

[in] Irp

버퍼 할당 요청이 이루어지는 IRP를 지정합니다.

[in] BufferSize

필요한 버퍼의 크기를 지정합니다. 이 크기는 요청의 모든 매개 변수를 포함합니다.

[in] InputOperation

입력 작업인 경우 TRUE 로 설정됩니다. 즉, 반환이 성공하면 Irp-IoStatus.Information> 필드에 원래 입력 버퍼로 다시 복사할 바이트 수가 포함됩니다.

반환 값

요청이 처리되면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 오류 코드를 반환합니다.

설명

일반적으로 풀 메모리는 버퍼 할당에 사용됩니다. 이렇게 하면 이벤트, 속성 및 메서드 쿼리를 하드웨어에 직접 전달하는 필터가 표준 처리 함수에 의해 배치되는 버퍼를 제공할 수 있도록 하여 추가 데이터 복사를 방지할 수 있습니다. 따라서 필터에는 버퍼 할당이 발생할 수 있는 어댑터에 이미 매핑된 메모리 블록이 있을 수 있습니다.

이 메모리는 일반적인 풀 할당 메모리가 아니기 때문에 필터는 Irp 완료 시 버퍼 정리를 수행해야 합니다. 즉, 동기가 아닌 usermode의 입력 작업의 경우 할당자는 대상 버퍼에 MDL을 할당하고, 검색하고, 잠그고, 시스템 주소를 검색해야 합니다. 반환 데이터를 원래 버퍼로 복사할 수 있도록 하려면 이 작업을 수행해야 합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 ks.h(Ks.h 포함)