다음을 통해 공유


IRP_MJ_WRITE 공용 구조체에 대한 FLT_PARAMETERS

다음 공용 구조체 구성 요소는 작업에 대한 FLT_IO_PARAMETER_BLOCK 구조체의 MajorFunction 필드가 IRP_MJ_WRITE 경우에 사용됩니다.

구문

typedef union _FLT_PARAMETERS {
  ...    ;
  struct {
    ULONG         Length;
    ULONG         Key;
    LARGE_INTEGER ByteOffset;
    PVOID         WriteBuffer;
    PMDL          MdlAddress;
  } Write;
  ...    ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

멤버

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

  • 길이: 쓸 데이터의 길이(바이트)입니다.

  • : 대상 파일의 바이트 범위 잠금과 연결된 키 값입니다.

  • ByteOffset: 쓸 데이터의 파일 내에서 바이트 오프셋을 시작합니다.

  • WriteBuffer: 파일에 쓸 데이터가 포함된 버퍼에 대한 포인터입니다. 이 멤버는 선택 사항이며 MDL이 MdlAddress제공된 경우 NULL일 수 있습니다. 설명을 참조하세요.

  • MdlAddress: WriteBuffer 멤버가 가리키는 버퍼 를 설명하는 MDL(메모리 설명자 목록)의 주소입니다. 이 멤버는 선택 사항이며 WriteBuffer버퍼가 제공된 경우 NULL수 있습니다. 설명을 참조하세요.

설명

IRP_MJ_WRITE 작업에 대한 FLT_PARAMETERS 구조에는 콜백 데이터(FLT_CALLBACK_DATA) 구조체로 표현되는 쓰기 작업에 대한 매개 변수가 포함됩니다. FLT_IO_PARAMETER_BLOCK 구조체에 포함되어 있습니다.

WriteBufferMdlAddress 버퍼가 모두 제공되는 경우 미니 필터에서 MDL을 사용하는 것이 좋습니다. WriteBuffer가리키는 메모리는 호출 프로세스의 컨텍스트 내에서 액세스되는 사용자 모드 주소이거나 커널 모드 주소인 경우 유효합니다.

미니 필터가 MdlAddress값을 변경하는 경우 작업 후 콜백 후 필터 관리자는 현재 MdlAddress저장된 MDL을 해제하고 MdlAddress이전 값을 복원합니다.

IRP_MN_COMPLETE 비트가 Iopb-MinorFunction>에서 설정된 경우 MdlAddress는 CcMdlReadComplete보낼 주소입니다.

IRP_MN_COMPLETE 비트가 아닌 IRP_MN_MDL 비트가 Iopb-MinorFunction>에서 설정된 경우 MdlAddress는 CcPrepareMdlWrite보낼 주소입니다.

IRP_MJ_WRITE IRP 기반 작업 또는 빠른 I/O 작업일 수 있습니다.

요구 사항

요구 사항 유형 요건
헤더 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

FltWriteFile

IRP_MJ_WRITE

ZwWriteFile