PFNKSALLOCATOR 콜백 함수(ks.h)
미니드라이버에서는 필요에 따라 KsEnableEventWithAllocator, KsPropertyHandlerWithAllocator 및 KsMethodHandlerWithAllocator 호출에서 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 포함) |