GetVolumeInformationW 関数 (fileapi.h)
指定したルート ディレクトリに関連付けられているファイル システムとボリュームに関する情報を取得します。
この情報を取得するときにハンドルを指定するには、 GetVolumeInformationByHandleW 関数を使用します。
ファイルまたはディレクトリの現在の圧縮状態を取得するには、 FSCTL_GET_COMPRESSIONを使用します。
構文
BOOL GetVolumeInformationW(
[in, optional] LPCWSTR lpRootPathName,
[out, optional] LPWSTR lpVolumeNameBuffer,
[in] DWORD nVolumeNameSize,
[out, optional] LPDWORD lpVolumeSerialNumber,
[out, optional] LPDWORD lpMaximumComponentLength,
[out, optional] LPDWORD lpFileSystemFlags,
[out, optional] LPWSTR lpFileSystemNameBuffer,
[in] DWORD nFileSystemNameSize
);
パラメーター
[in, optional] lpRootPathName
記述するボリュームのルート ディレクトリを含む文字列へのポインター。
このパラメーターが NULL の場合は、現在のディレクトリのルートが使用されます。 末尾の円記号が必要です。 たとえば、\\MyServer\MyShare を "\\MyServer\MyShare\" として指定するか、C ドライブを "C:\" と指定します。
[out, optional] lpVolumeNameBuffer
指定したボリュームの名前を受け取るバッファーへのポインター。 バッファー サイズは 、nVolumeNameSize パラメーターで指定します。
[in] nVolumeNameSize
TCHAR でのボリューム名バッファーの長さ。 最大バッファー サイズは MAX_PATH+1 です。
ボリューム名バッファーが指定されていない場合、このパラメーターは無視されます。
[out, optional] lpVolumeSerialNumber
ボリュームのシリアル番号を受け取る変数へのポインター。
シリアル番号が不要な場合、このパラメーターは NULL にすることができます 。
この関数は、ハード ディスクのフォーマット時にオペレーティング システムによって割り当てられるボリュームのシリアル番号を返します。 製造元が割り当てるハード ディスクのシリアル番号をプログラムで取得するには、Windows Management Instrumentation (WMI) Win32_PhysicalMedia プロパティ 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 |
指定されたボリュームは、再解析ポイントをサポートします。 Refs: ReFS は再解析ポイントをサポートしますが、インデックスを作成しないため、 FindFirstVolumeMountPoint と FindNextVolumeMountPoint は期待どおりに機能しません。 |
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_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 ドライブに関する情報を取得しようとすると、フロッピー ディスクまたはコンパクト ディスクをそれぞれ挿入するためのメッセージ ボックスが表示されます。 システムでこのメッセージ ボックスが表示されないようにするには、 setErrorMode 関数を SEM_FAILCRITICALERRORSと共に呼び出します。
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 プロトコル | No |
SMB 3.0 Transparent Failover (TFO) | No |
SMB 3.0 とスケールアウト ファイル共有 (SO) | No |
クラスター共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | はい |
SMB では、ボリューム管理機能はサポートされていません。
トランザクション操作
ボリュームがファイル システム トランザクションをサポートしている場合、この関数は lpFileSystemFlags でFILE_SUPPORTS_TRANSACTIONSを返します。
注意
ヘッダーはfileapi.h
、GetVolumeInformation をエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | fileapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |