다음을 통해 공유


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