FSCTL_GET_NTFS_FILE_RECORD IOCTL (winioctl.h)
擷取使用中的第一筆檔案記錄,且其值小於或等於要求的檔案參考編號。
若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函 式。
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
FSCTL_GET_NTFS_FILE_RECORD, // dwIoControlCode
(LPVOID) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
(LPVOID) lpOutBuffer, // output buffer
(DWORD) nOutBufferSize, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
備註
此控件程式代碼會以向下方式列舉檔案標識符,並一律傳回正在使用中的檔案記錄。 這表示此控制程式代碼傳回的檔案標識碼與輸入緩衝區中指定的檔案識別碼不同。 例如,如果正在使用檔案標識碼 1 到 9 和 15,則不會使用檔案識別碼 10 到 14,而且會要求對應至檔案標識碼 15 的檔案記錄,則會傳回該檔案記錄。
如果要求對應至檔案標識碼 10 到 14 的檔案記錄,則會傳回對應至檔案標識碼 9 的檔案記錄。 如果要求任何對應至檔案標識碼 1 到 9 的檔案記錄,則會傳回這些檔案記錄。
若要判斷 lpOutBuffer 指向之輸出緩衝區的正確大小,請先呼叫 FSCTL_GET_NTFS_VOLUME_DATA 控件程式代碼,以取得一筆檔案記錄的大小。 這是傳回之NTFS_VOLUME_DATA_BUFFER結構的 BytesPerFileRecordSegment 成員的值。 然後將輸出緩衝區的大小設定為下列運算式:
sizeof (NTFS_FILE_RECORD_OUTPUT_BUFFER) + sizeof (one file record) - 1
如果檔案是由多個檔案記錄所組成,則必須個別擷取它們。
在 Windows 8 和 Windows Server 2012 中,下列技術支援此程序代碼。
技術 | 支援 |
---|---|
伺服器消息塊 (SMB) 3.0 通訊協定 | No |
SMB 3.0 透明故障轉移 (TFO) | No |
具有向外延展檔案共用的SMB 3.0 (SO) | No |
叢集共用磁碟區文件系統 (CsvFS) | Yes |
彈性檔案系統 (ReFS) | No |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
標頭 | winioctl.h (包含 Windows.h) |