다음을 통해 공유


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 제어 코드(IOCTL) 또는 파일 개체가 비동기 I/O용으로 열린 경우에도 METHOD_BUFFERED 정의한 FSCTL(파일 시스템 제어 코드)을 사용하여 IRP_MJ_DEVICE_CONTROL, IRP_MJ_INTERNAL_DEVICE_CONTROL 또는 IRP_MJ_FILE_SYSTEM_CONTROL 작업을 나타내는 경우에도 TRUE를 반환합니다. 이러한 요청은 파일 시스템에 의해 동기로 수행될 가능성이 높지만 모든 경우에 반드시 해당되는 것은 아닙니다.

FltIsOperationSynchronous TRUE를 반환하는 경우 I/O 작업이 동기화되었음을 나타내지 않습니다. 즉, TRUE 값은 미니 필터 드라이버가 이 작업에 대한 사전 운용 콜백(PFLT_POST_OPERATION_CALLBACK) 루틴에서 FLT_PREOP_SYNCHRONIZE 반환했음을 나타내지 않습니다. 대신 FltIsOperationSynchronous TRUE를 반환하여 I/O 작업이 I/O 관리자의 관점에서 동기적임을 나타냅니다.

FltIsOperationSynchronous 빠른 I/O, FSFilter(파일 시스템 필터) 콜백 및 IRP 기반 작업과 같은 모든 작업 클래스에 대해 호출할 수 있습니다.

요구 사항

요구
대상 플랫폼 보편적
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
DLL Fltmgr.sys
IRQL 모든 수준

참고 항목

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

IoIsOperationSynchronous