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 모든 수준

추가 정보

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

IoIsOperationSynchronous