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 구조체에 포함되어 있습니다.
WriteBuffer와 MdlAddress 버퍼가 모두 제공되는 경우 미니 필터에서 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 포함) |