FltIsOperationSynchronous 함수(fltkernel.h)
FltIsOperationSynchronous 루틴은 지정된 콜백 데이터 구조(FLT_CALLBACK_DATA)가 동기 또는 비동기 I/O 작업을 나타내는지 여부를 결정합니다.
구문
BOOLEAN FLTAPI FltIsOperationSynchronous(
[in] PFLT_CALLBACK_DATA CallbackData
);
매개 변수
[in] CallbackData
작업(FLT_CALLBACK_DATA)에 대한 콜백 데이터 구조에 대한 포인터입니다.
반환 값
FltIsOperationSynchronous 는 작업이 동기적이면 TRUE를 반환하고, 작업이 비동기인 경우 FALSE를 반환합니다.
설명
FltIsOperationSynchronous 는 지정된 콜백 데이터 구조(FLT_CALLBACK_DATA)가 다음 조건에 따라 동기 또는 비동기 I/O 작업을 나타내는지 여부를 결정합니다.
작업이 IRP 기반 I/O 작업이 아닌 경우 작업은 동기식입니다. 작업이 IRP 기반인지 확인하려면 FLT_IS_IRP_OPERATION 매크로를 사용합니다.
작업이 비동기 페이징 I/O 작업인 경우 이 목록의 다른 조건 중 하나가 true인 경우에도 작업이 비동기적입니다.
작업이 동기 페이징 I/O 작업인 경우 작업은 동기식입니다.
연산의 파일 개체가 동기 I/O에 대해 열린 경우 작업은 동기식입니다.
작업에 대한 IRP_SYNCHRONOUS_API 플래그가 IRP에 설정된 경우 작업은 동기식입니다. 이 플래그는 비동기 I/O용으로 열린 파일 개체에서 수행된 경우에도 항상 동기식인 IRP_MJ_QUERY_INFORMATION 및 IRP_MJ_SET_INFORMATION 같은 작업에 대해 설정됩니다.
위의 조건이 true가 아니면 작업이 비동기식입니다.
참고
또한 FltIsOperationSynchronous 는 파일 개체가 비동기 I/O용으로 열린 경우에도 콜백 데이터 구조가 I/O 제어 코드(IOCTL) 또는 FSCTL(파일 시스템 제어 코드)을 사용하여 IRP_MJ_DEVICE_CONTROL, METHOD_BUFFERED IRP_MJ_INTERNAL_DEVICE_CONTROL 또는 IRP_MJ_FILE_SYSTEM_CONTROL 작업을 나타내는 경우에도 TRUE를 반환합니다. 이러한 요청은 파일 시스템에 의해 동기적으로 수행될 수 있지만 모든 경우에 반드시 해당되는 것은 아닙니다.
FltIsOperationSynchronous가 TRUE를 반환하는 경우 I/O 작업이 동기화되었음을 의미하지는 않습니다. 즉, TRUE 값은 미니필터 드라이버가 이 작업에 대한 PFLT_POST_OPERATION_CALLBACK(사전 작업 콜백) 루틴에서 FLT_PREOP_SYNCHRONIZE 반환했음을 나타내지 않습니다. 대신 FltIsOperationSynchronous 는 I/O 작업이 I/O 관리자의 관점에서 동기적임을 나타내기 위해 TRUE를 반환합니다.
빠른 I/O, FSFilter(파일 시스템 필터) 콜백 및 IRP 기반 작업과 같은 모든 작업 클래스에 대해 FltIsOperationSynchronous를 호출할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | 모든 수준 |