GetVolumeInformationA 関数 (fileapi.h)
指定したルート ディレクトリに関連付けられているファイル システムとボリュームに関する情報を取得します。
この情報を取得するときにハンドルを指定するには、GetVolumeInformationByHandleW 関数を使用します。
ファイルまたはディレクトリの現在の圧縮状態を取得するには、FSCTL_GET_COMPRESSIONを使用します。
構文
BOOL GetVolumeInformationA(
[in, optional] LPCSTR lpRootPathName,
[out, optional] LPSTR lpVolumeNameBuffer,
[in] DWORD nVolumeNameSize,
[out, optional] LPDWORD lpVolumeSerialNumber,
[out, optional] LPDWORD lpMaximumComponentLength,
[out, optional] LPDWORD lpFileSystemFlags,
[out, optional] LPSTR lpFileSystemNameBuffer,
[in] DWORD nFileSystemNameSize
);
パラメーター
[in, optional] lpRootPathName
記述するボリュームのルート ディレクトリを含む文字列へのポインター。
このパラメーターが NULL
[out, optional] lpVolumeNameBuffer
指定したボリュームの名前を受け取るバッファーへのポインター。 バッファー サイズは、nVolumeNameSize パラメーターによって指定されます。
[in] nVolumeNameSize
ボリューム名バッファーの長さ (TCHAR)。 最大バッファー サイズは MAX_PATHs+1 です。
ボリューム名バッファーが指定されていない場合、このパラメーターは無視されます。
[out, optional] lpVolumeSerialNumber
ボリュームのシリアル番号を受け取る変数へのポインター。
シリアル番号が不要な場合、このパラメーターは NULL を
この関数は、ハード ディスクのフォーマット時にオペレーティング システムが割り当てるボリュームのシリアル番号を返します。 製造元が割り当てるハード ディスクのシリアル番号をプログラムで取得するには、SerialNumber
[out, optional] lpMaximumComponentLength
指定したファイル システムがサポートするファイル名コンポーネントの最大長 (TCHAR) を受け取る変数へのポインター。
ファイル名コンポーネントは、円記号の間のファイル名の部分です。
*lpMaximumComponentLength が指す変数に格納されている値は、指定されたファイル システムが長い名前をサポートしていることを示すために使用されます。 たとえば、長い名前をサポートする FAT ファイル システムの場合、関数は前の 8.3 インジケーターではなく値 255 を格納します。 長い名前は、NTFS ファイル システムを使用するシステムでもサポートできます。
[out, optional] lpFileSystemFlags
指定したファイル システムに関連付けられているフラグを受け取る変数へのポインター。
このパラメーターには、次のフラグを 1 つ以上指定できます。 ただし、FILE_FILE_COMPRESSION と FILE_VOL_IS_COMPRESSED は相互に排他的です。
価値 | 意味 |
---|---|
FILE_CASE_SENSITIVE_SEARCH 0x00000001 |
指定されたボリュームでは、大文字と小文字が区別されるファイル名がサポートされます。 |
FILE_CASE_PRESERVED_NAMES 0x00000002 |
指定されたボリュームでは、ディスクに名前を配置するときに、ファイル名の大文字と小文字の保持がサポートされます。 |
FILE_UNICODE_ON_DISK 0x00000004 |
指定されたボリュームでは、ディスクに表示されるファイル名の Unicode がサポートされます。 |
FILE_PERSISTENT_ACLS 0x00000008 |
指定されたボリュームは、アクセス制御リスト (ACL) を保持し、適用します。 たとえば、NTFS ファイル システムでは ACL が保持および適用され、FAT ファイル システムでは保持されません。 |
FILE_FILE_COMPRESSION 0x00000010 |
指定されたボリュームは、ファイル ベースの圧縮をサポートします。 |
FILE_VOLUME_QUOTAS 0x00000020 |
指定されたボリュームでディスク クォータがサポートされます。 |
FILE_SUPPORTS_SPARSE_FILES 0x00000040 |
指定されたボリュームはスパース ファイルをサポートします。 |
FILE_SUPPORTS_REPARSE_POINTS 0x00000080 |
指定されたボリュームは、再解析ポイントをサポートします。 |
FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 |
ファイル システムはリモート ストレージをサポートします。 |
FILE_RETURNS_CLEANUP_RESULT_INFO 0x00000200 |
クリーンアップ操作が成功すると、ファイル システムは、ファイルの削除など、クリーンアップ中に実行された追加のアクションを説明する情報を返します。 ファイル システム フィルターは、クリーンアップ後のコールバックでこの情報を調べることができます。 |
FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x00000400 |
ファイル システムでは、POSIX スタイルの削除操作と名前変更操作がサポートされています。 |
FILE_VOLUME_IS_COMPRESSED 0x00008000 |
指定されたボリュームは、たとえば DoubleSpace ボリュームなどの圧縮ボリュームです。 |
FILE_SUPPORTS_OBJECT_IDS 0x00010000 |
指定されたボリュームは、オブジェクト識別子をサポートします。 |
FILE_SUPPORTS_ENCRYPTION 0x00020000 |
指定されたボリュームは、暗号化されたファイル システム (EFS) をサポートします。 詳細については、「File Encryption」を参照してください。 |
FILE_NAMED_STREAMS 0x00040000 |
指定されたボリュームは、名前付きストリームをサポートします。 |
FILE_READ_ONLY_VOLUME 0x00080000 |
指定されたボリュームは読み取り専用です。 |
FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 |
指定されたボリュームは、単一の順次書き込みをサポートします。 |
FILE_SUPPORTS_TRANSACTIONS 0x00200000 |
指定されたボリュームはトランザクションをサポートします。 詳細については、「KTMについて」を参照してください。 |
FILE_SUPPORTS_HARD_LINKS 0x00400000 |
指定されたボリュームは、ハード リンクをサポートしています。 詳細については、「ハード リンクとジャンクション」を参照してください。 Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値は、Windows Server 2008 R2 および Windows 7 までサポートされていません。 |
FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 |
指定されたボリュームは拡張属性をサポートします。 拡張属性は、アプリケーションがファイルに関連付けることができるアプリケーション固有のメタデータの一部であり、ファイルのデータの一部ではありません。 Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値は、Windows Server 2008 R2 および Windows 7 までサポートされていません。 |
FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 |
ファイル システムは FileID による開きをサポートしています。 詳細については、FILE_ID_BOTH_DIR_INFOを参照してください。 Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値は、Windows Server 2008 R2 および Windows 7 までサポートされていません。 |
FILE_SUPPORTS_USN_JOURNAL 0x02000000 |
指定されたボリュームは、更新シーケンス番号 (USN) ジャーナルをサポートします。 詳細については、「履歴レコードの変更」を参照してください。 Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値は、Windows Server 2008 R2 および Windows 7 までサポートされていません。 |
FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000 |
ファイル システムは、 |
FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 |
指定されたボリュームは、同じボリューム上のファイル間での論理クラスターの共有をサポートします。 ファイル システムは、共有クラスターへの書き込み時に再割り当てを行います。 FSCTL_DUPLICATE_EXTENTS_TO_FILE がサポートされている操作であることを示します。 |
FILE_SUPPORTS_SPARSE_VDL 0x10000000 |
ファイル システムは、ファイルの各クラスターに有効なデータ (明示的なファイル書き込みまたは自動ゼロのいずれか) が含まれているか、無効なデータ (まだ書き込まれていないかゼロにされたか) を追跡します。 スパース有効なデータ長 (VDL) を使用するファイル システムでは、有効なデータ長が格納されず、有効なデータがファイル内で連続している必要はありません。 |
FILE_DAX_VOLUME 0x20000000 |
指定されたボリュームは、直接アクセス (DAX) ボリュームです。 注: このフラグは、Windows 10 バージョン 1607 で導入されました。 |
FILE_SUPPORTS_GHOSTING 0x40000000 |
ファイル システムはゴースト処理をサポートしています。 |
[out, optional] lpFileSystemNameBuffer
FAT ファイル システムや NTFS ファイル システムなど、ファイル システムの名前を受け取るバッファーへのポインター。 バッファー サイズは、nFileSystemNameSize パラメーターによって指定されます。
[in] nFileSystemNameSize
ファイル システム名バッファーの長さ (TCHAR)。 最大バッファー サイズは MAX_PATH+1 です。
ファイル システム名バッファーが指定されていない場合、このパラメーターは無視されます。
戻り値
要求されたすべての情報が取得された場合、戻り値は 0 以外です。
要求されたすべての情報が取得されない場合、戻り値は 0 になります。 拡張エラー情報を取得するには、GetLastError
備考
ユーザーがフロッピー ディスクを持たないフロッピー ドライブ、またはコンパクト ディスクを持たない CD-ROM ドライブに関する情報を取得しようとすると、フロッピー ディスクまたはコンパクト ディスクをそれぞれ挿入するためのメッセージ ボックスが表示されます。 システムでこのメッセージ ボックスが表示されないようにするには、SEM_FAILCRITICALERRORSを使用して SetErrorMode 関数を呼び出します。
FILE_VOL_IS_COMPRESSED フラグは、ボリューム ベースの圧縮の唯一のインジケーターです。 ファイル システム名は、圧縮を示すように変更されません。たとえば、このフラグは DoubleSpace ボリュームに設定されて返されます。 圧縮がボリューム ベースの場合、ボリューム全体が圧縮されるか、圧縮されません。
FILE_FILE_COMPRESSION フラグは、ファイル システムがファイル ベースの圧縮をサポートしているかどうかを示します。 圧縮がファイル ベースの場合、個々のファイルを圧縮するか、圧縮できません。
FILE_FILE_COMPRESSION フラグと FILE_VOL_IS_COMPRESSED フラグは相互に排他的です。 両方のビットを設定して返すことはできません。
lpMaximumComponentLength に格納される最大コンポーネント長の値は、ボリュームが通常より長い FAT ファイル システム (またはその他のファイル システム) ファイル名をサポートしていることを示す唯一のインジケーターです。 ファイル システム名は、長いファイル名のサポートを示すように変更されません。
GetCompressedFileSize 関数は、ファイルの圧縮サイズを取得します。 GetFileAttributes 関数は、個々のファイルが圧縮されているかどうかを判断できます。
シンボリック リンクの動作
パスがシンボリック リンクを指している場合、関数はターゲットのボリューム情報を返します。
Windows 8 および Windows Server 2012 以降では、この関数は次のテクノロジでサポートされています。
テクノロジー | サポート |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | いいえ |
SMB 3.0 透過的フェールオーバー (TFO) | いいえ |
SMB 3.0 とスケールアウト ファイル共有 (SO) | いいえ |
クラスター共有ボリューム ファイル システム (CsvFS) | はい |
回復性のあるファイル システム (ReFS) | はい |
SMB はボリューム管理機能をサポートしていません。
トランザクション操作
ボリュームがファイル システム トランザクションをサポートしている場合、この関数は lpFileSystemFlags
手記
fileapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetVolumeInformation を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | fileapi.h (Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
KTM について
GetCompressedFileSize を
SetErrorMode の
ボリューム管理機能 の