KsSetMajorFunctionHandler 함수(ks.h)
KsSetMajorFunctionHandler 함수는 지정된 주 함수에 대한 처리기를 설정하여 내부 디스패치를 사용합니다. 불투명 개체 헤더에 포함된 KSDISPATCH_TABLE 통해 파일 개체 내 의 FsContext 가 가리키는 구조체 내의 첫 번째 요소로 라우팅됩니다. 디스패치는 테이블 및 FsContext 구조가 KsAllocateObjectHeader를 사용하여 디바이스에 의해 초기화된다고 가정합니다.
구문
KSDDKAPI NTSTATUS KsSetMajorFunctionHandler(
[in] PDRIVER_OBJECT DriverObject,
[in] ULONG MajorFunction
);
매개 변수
[in] DriverObject
주 함수를 처리할 드라이버 개체를 지정합니다.
[in] MajorFunction
처리할 주요 함수 식별자를 지정합니다. 이렇게 하면 드라이버 개체의 주 함수 포인터가 내부 함수로 설정되어 KSDISPATCH_TABLE 함수로 디스패치됩니다. 이 테이블에 대한 포인터는 디스패치되는 특정 IRP의 파일 개체에서 FsContext 가 가리키는 구조체의 첫 번째 요소로 간주됩니다. 유효한 주 함수 식별자가 나열됩니다.
ID | Description |
---|---|
IRP_MJ_CREATE | IRP를 Create. 이 instance 필터의 새 instance 만들거나 필터 아래 핀 또는 핀 아래 클록과 같은 일부 개체를 만드는 데 만들기 요청을 사용할 수 있습니다. 드라이버 개체의 익스텐트의 첫 번째 요소에 전달된 이름에 따라 만들 개체의 형식을 찾는 데 사용되는 KSDEVICE_HEADER 구조체가 포함되어 있다고 가정합니다. 부모 파일 개체를 지정하면 해당 개체가 KSDISPATCH_TABLE. FsContext 의 ChildCreateHandlerTable은 만들기에 사용할 처리기를 결정하거나 디바이스 개체의 테이블을 사용하는 방법을 살펴봅니다. |
IRP_MJ_CLOSE | IRP를 닫습니다. |
IRP_MJ_DEVICE_CONTROL | 디바이스 제어 IRP. |
IRP_MJ_READ | IRP를 읽습니다. |
IRP_MJ_WRITE | IRP를 작성합니다. |
IRP_MJ_FLUSH_BUFFERS | 플러시 IRP. |
IRP_MJ_QUERY_SECURITY | 보안 정보를 쿼리합니다. |
IRP_MJ_SET_SECURITY | 보안 정보를 설정합니다. |
KSDISPATCH_FASTIO | 이 플래그는 입력이 일반적인 주 함수 항목이 아닌 빠른 I/O 디스패치 테이블을 참조하도록 지정하기 위해 MajorFunction 식별자에 추가할 수 있습니다. 이는 IRP_MJ_READ, IRP_MJ_WRITE 또는 IRP_MJ_DEVICE_CONTROL 경우에만 유효합니다. 드라이버는 DriverObject-FastIoDispatch> 테이블을 만들어야 합니다. 일반 디스패치와 마찬가지로 드라이버 개체에 대한 처리기가 설정된 경우 항목이 DispatchFastIoDeviceControlFailure 또는 유사한 함수를 가리키는 경우에도 모든 파일 개체는 빠른 I/O를 처리해야 합니다. |
반환 값
MajorFunction 식별자가 유효한 경우 STATUS_SUCCESS 반환합니다.
설명
드라이버 개체에 대해 주 함수 처리기가 설정된 경우 항목이 KsDispatchInvalidDeviceRequest를 가리키는 경우에도 모든 파일 개체가 해당 주 함수를 처리해야 합니다.
KSDISPATCH_FASTIO
이 플래그는 IRP 기반 항목이 아닌 빠른 I/O 항목을 설정하도록 지정하는 데 사용할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | ks.h(Ks.h 포함) |
라이브러리 | Ks.lib |