다음을 통해 공유


IRP_MJ_DIRECTORY_CONTROL 공용 구조체에 대한 FLT_PARAMETERS

연산에 대한 FLT_IO_PARAMETER_BLOCK 구조체의 MajorFunction 필드가 IRP_MJ_DIRECTORY_CONTROL 때 사용되는 공용 구조체 구성 요소입니다.

구문

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      ULONG                   Length;
      PUNICODE_STRING         FileName;
      FILE_INFORMATION_CLASS  FileInformationClass;
      ULONG POINTER_ALIGNMENT FileIndex;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } QueryDirectory;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT CompletionFilter;
      ULONG                   Spare1;
      ULONG POINTER_ALIGNMENT Spare2;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } NotifyDirectory;
  } DirectoryControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

멤버

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

  • QueryDirectory: IRP_MN_QUERY_DIRECTORY 작업에 사용되는 공용 구조체 구성 요소입니다.

  • 길이: QueryDirectory.DirectoryBuffer 멤버가 가리키는 버퍼의 길이(바이트)입니다.

  • FileName: 지정된 디렉터리 내의 파일 이름을 포함하는 UNICODE_STRING 구조체에 대한 포인터입니다.

  • FileInformationClass: 아래에 설명된 값 중 하나를 지정합니다.

    의미
    FileBothDirectoryInformation 각 파일에 대한 FILE_BOTH_DIR_INFORMATION 구조를 반환합니다.
    FileDirectoryInformation 각 파일에 대한 FILE_DIRECTORY_INFORMATION 구조를 반환합니다.
    FileFullDirectoryInformation 각 파일에 대한 FILE_FULL_DIR_INFORMATION 구조를 반환합니다.
    FileIdBothDirectoryInformation 각 파일에 대한 FILE_ID_BOTH_DIR_INFORMATION 구조를 반환합니다.
    FileIdFullDirectoryInformation 각 파일에 대한 FILE_ID_FULL_DIR_INFORMATION 구조를 반환합니다.
    FileNamesInformation 각 파일에 대한 FILE_NAMES_INFORMATION 구조를 반환합니다.
    FileObjectIdInformation 각 파일에 대한 FILE_OBJECTID_INFORMATION 구조를 반환합니다.
    FileReparsePointInformation 디렉터리에 대한 단일 FILE_REPARSE_POINT_INFORMATION 구조를 반환합니다.
  • FileIndex: 디렉터리 검사가 시작되는 파일의 인덱스입니다. SL_INDEX_SPECIFIED 플래그가 설정되지 않은 경우 무시됩니다. 이 매개 변수는 Win32 함수 또는 커널 모드 지원 루틴에서 지정할 수 없습니다. 현재는 32비트 NT 기반 운영 체제에만 존재하는 NT NTVDM(가상 DOS 머신)에서만 사용됩니다. 파일 인덱스는 부모 디렉터리 내의 파일 위치가 고정되지 않고 정렬 순서를 유지하기 위해 언제든지 변경할 수 있는 NTFS와 같은 파일 시스템에 대해 정의되지 않습니다.

  • DirectoryBuffer: 디렉터리의 내용에 대한 요청된 정보를 수신하는 호출자가 제공한 출력 버퍼에 대한 포인터입니다. 이 멤버는 선택 사항이며 QueryDirectory.MdlAddress에 MDL이 제공된 경우 NULL일 수 있습니다. 설명을 참조하세요.

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

  • NotifyDirectory: IRP_MN_NOTIFY_CHANGE_DIRECTORY 작업에 사용되는 공용 구조체 구성 요소입니다.

  • 길이: NotifyDirectory.DirectoryBuffer 멤버가 가리키는 버퍼의 길이(바이트)입니다.

  • CompletionFilter: 알림 목록의 IRP가 완료될 파일 또는 디렉터리에 대한 변경 유형을 지정하는 플래그의 비트 마스크입니다. 가능한 플래그 값은 다음과 같습니다.

    플래그 의미
    FILE_NOTIFY_CHANGE_FILE_NAME 파일이 이 디렉터리에서 추가, 삭제 또는 이름이 바뀌었습니다.
    FILE_NOTIFY_CHANGE_DIR_NAME 하위 디렉터리가 생성, 제거 또는 이름이 변경되었습니다.
    FILE_NOTIFY_CHANGE_NAME 이 디렉터리의 이름이 변경되었습니다.
    FILE_NOTIFY_CHANGE_ATTRIBUTES 이 파일의 특성 값(예: 마지막 액세스 시간)이 변경되었습니다.
    FILE_NOTIFY_CHANGE_SIZE 이 파일의 크기가 변경되었습니다.
    FILE_NOTIFY_CHANGE_LAST_WRITE 이 파일의 마지막 수정 시간이 변경되었습니다.
    FILE_NOTIFY_CHANGE_LAST_ACCESS 이 파일의 마지막 액세스 시간이 변경되었습니다.
    FILE_NOTIFY_CHANGE_CREATION 이 파일의 생성 시간이 변경되었습니다.
    FILE_NOTIFY_CHANGE_EA 이 파일의 확장 특성이 수정되었습니다.
    FILE_NOTIFY_CHANGE_SECURITY 이 파일의 보안 정보가 변경되었습니다.
    FILE_NOTIFY_CHANGE_STREAM_NAME 이 디렉터리에서 파일 스트림이 추가, 삭제 또는 이름이 변경되었습니다.
    FILE_NOTIFY_CHANGE_STREAM_SIZE 이 파일 스트림의 크기가 변경되었습니다.
    FILE_NOTIFY_CHANGE_STREAM_WRITE 이 파일 스트림의 데이터가 변경되었습니다.
  • Spare1: 현재 사용되지 않습니다.

  • Spare2: 현재 사용되지 않습니다.

  • DirectoryBuffer: 디렉터리의 내용에 대한 요청된 정보를 수신하는 호출자가 제공한 출력 버퍼에 대한 포인터입니다. 이 멤버는 선택 사항이며 NotifyDirectory.MdlAddress에 MDL이 제공된 경우 NULL일 수 있습니다. 설명을 참조하세요.

  • MdlAddress: NotifyDirectory.DirectoryBuffer 멤버가 가리키는 버퍼를 설명하는 MDL의 주소입니다. 이 멤버는 선택 사항이며 NotifyDirectory.DirectoryBuffer에 버퍼가 제공된 경우 NULL일 수 있습니다. 설명을 참조하세요.

설명

IRP_MJ_DIRECTORY_CONTROL 작업에 대한 FLT_PARAMETERS 구조에는 콜백 데이터(FLT_CALLBACK_DATA) 구조로 표시되는 IRP 기반 디렉터리 제어-정보 작업에 대한 매개 변수가 포함됩니다. FLT_IO_PARAMETER_BLOCK 구조체에 포함되어 있습니다.

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

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

IRP_MJ_DIRECTORY_CONTROL IRP 기반 작업입니다.

요구 사항

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

추가 정보

FILE_BOTH_DIR_INFORMATION

FILE_DIRECTORY_INFORMATION

FILE_FULL_DIR_INFORMATION

FILE_ID_BOTH_DIR_INFORMATION

FILE_ID_FULL_DIR_INFORMATION

FILE_NAMES_INFORMATION

FILE_OBJECTID_INFORMATION

FILE_REPARSE_POINT_INFORMATION

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltNotifyFilterChangeDirectory

FsRtlNotifyFilterChangeDirectory

FsRtlNotifyFilterReportChange

FsRtlNotifyFullChangeDirectory

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile