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 函式或內核模式支援例程中指定。 目前只有NT虛擬 DOS 電腦 (NTVDM) 使用,這隻存在於 32 位 NT 型作業系統上。 請注意,檔案索引未定義給文件系統,例如NTFS,其中檔案在父目錄中的位置不是固定的,而且可以隨時變更以維護排序順序。
DirectoryBuffer:呼叫端提供的輸出緩衝區指標,該緩衝區會接收目錄內容的相關要求資訊。 如果 QueryDirectory.MdlAddress 中提供 MDL,這個成員是選擇性的,而且可以是 NULL。 請參閱備註。
MdlAddress:描述項清單 (MDL) 位址,描述 QueryDirectory.DirectoryBuffer 成員指向的緩衝區。 如果 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 此檔案數據流的數據已變更。 備援1:目前未使用。
備援2:目前未使用。
DirectoryBuffer:呼叫端提供的輸出緩衝區指標,該緩衝區會接收目錄內容的相關要求資訊。 如果 NotifyDirectory.MdlAddress 中提供 MDL,這個成員是選擇性的,而且可以是 NULL。 請參閱備註。
MdlAddress:描述 NotifyDirectory.DirectoryBuffer 成員指向之緩衝區的 MDL 位址。 如果 NotifyDirectory.DirectoryBuffer 中提供緩衝區,這個成員是選擇性的,而且可以是 NULL。 請參閱備註。
備註
IRP_MJ_DIRECTORY_CONTROL作業的FLT_PARAMETERS結構包含回呼數據所代表之 IRP 型目錄控制資訊作業的參數, (FLT_CALLBACK_DATA) 結構。 它包含在FLT_IO_PARAMETER_BLOCK結構中。
如果同時提供 DirectoryBuffer 和 MdlAddress 緩衝區,建議迷你篩選使用 MDL。 DirectoryBuffer 所指向的記憶體在呼叫進程內容中存取的使用者模式位址時有效,或者如果它是核心模式位址,則為 。
如果迷你篩選變更 MdlAddress 的值,則在後續作業回呼之後,篩選管理員會釋放目前儲存在 MdlAddress 中的 MDL,並還原先前的 MdlAddress 值。
IRP_MJ_DIRECTORY_CONTROL是以 IRP 為基礎的作業。
規格需求
需求類型 | 需求 |
---|---|
標頭 | Fltkernel.h (包含 Fltkernel.h) |
另請參閱
FILE_REPARSE_POINT_INFORMATION
FltNotifyFilterChangeDirectory
FsRtlNotifyFilterChangeDirectory