다음을 통해 공유


IRP_MJ_MDL_READ 공용 구조체에 대한 FLT_PARAMETERS

다음 FLT_PARAMETERS 공용 구조체 멤버는 FLT_IO_PARAMETER_BLOCK 때 사용됩니다. MajorFunction 은 IRP_MJ_MDL_READ.

구문

typedef union _FLT_PARAMETERS {
  ...    ;
  struct {
    LARGE_INTEGER           FileOffset;
    ULONG POINTER_ALIGNMENT Length;
    ULONG POINTER_ALIGNMENT Key;
    PMDL                    *MdlChain;
  } MdlRead;
  ...    ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

멤버

  • MdlRead: 다음 멤버를 포함하는 구조체입니다.

  • FileOffset: 캐시된 파일 내에서 바이트를 시작합니다.

  • 길이: 캐시된 파일에서 읽을 데이터의 길이(바이트)입니다.

  • : 대상 파일의 바이트 범위 잠금과 연결된 키 값입니다. 읽을 범위가 겹치거나 파일 내에서 배타적으로 잠긴 범위의 하위 범위인 경우 이 매개 변수는 해당 배타적 잠금의 키여야 합니다. 단독 잠금은 호출 스레드의 부모 프로세스에 의해 유지되어야 합니다. 그렇지 않으면 이 매개 변수가 무시됩니다.

  • MdlChain: 읽을 데이터가 포함된 페이지를 설명하는 하나 이상의 MDL(메모리 설명자 목록) 체인에 대한 포인터를 받는 변수에 대한 포인터입니다.

설명

IRP_MJ_MDL_READ 빠른 I/O 작업입니다. 다음 차이점을 제외하고 IRP_MJ_READ + IRP_MN_MDL 동일한 작업을 수행합니다.

  • IRP 기반 작업은 MDL 작업을 수행하기 전에 아직 캐시되지 않은 경우 파일에 대한 캐싱을 설정합니다.
  • 파일이 아직 캐시되지 않은 경우 빠른 IO 작업이 실패합니다.

IRP_MJ_MDL_READ 작업에 대한 FLT_PARAMETERS 구조에는 빠른 I/O MdlRead 작업에 대한 매개 변수가 포함되어 있습니다. 작업은 Iopb이 가리키는 FLT_IO_PARAMETER_BLOCK 구조에서 연산의 매개 변수를 사용하여 (FLT_CALLBACK_DATA) 구조체로 표시됩니다.

빠른 I/O IRP_MJ_MDL_READ 요청이 실패하면 I/O의 발급자에서 요청을 다시 발행하는 방법을 결정합니다. 예를 들어 요청은 IRP_MJ_READ + IRP_MN_MDL 사용하여 IRP 기반 작업으로 재발행될 수 있습니다.

요구 사항

요구 사항 유형 요건
헤더 Fltkernel.h(Fltkernel.h 포함)

참고 항목

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS