GetVolumeInformation

https://msdn.microsoft.com/ja-jp/library/cc428944.aspx https://msdn.microsoft.com/ja-jp/library/cc428987.aspx https://msdn.microsoft.com/ja-jp/library/cc428987.aspx

指定されたルートディレクトリのファイルシステムとボリュームに関する情報を取得します。

BOOL GetVolumeInformation(
  LPCTSTR lpRootPathName,           // ルートディレクトリ
  LPTSTR lpVolumeNameBuffer,        // ボリューム名バッファ
  DWORD nVolumeNameSize,            // 名前バッファのサイズ
  LPDWORD lpVolumeSerialNumber,     // ボリュームのシリアル番号
  LPDWORD lpMaximumComponentLength, // ファイル名の最大の長さ
  LPDWORD lpFileSystemFlags,        // ファイルシステムのオプション
  LPTSTR lpFileSystemNameBuffer,    // ファイルシステム名を格納するバッファ
  DWORD nFileSystemNameSize         // ファイルシステム名を格納するバッファのサイズ
);

パラメータ

lpRootPathName
ボリュームのルートディレクトリ名を保持している文字列へのポインタを指定します。NULL を指定すると、現在のディレクトリのルートディレクトリが使われます。最後に円記号(\)を追加しなければなりません。たとえば、「\\MyServer\MyShare」は「\\MyServer\MyShare\」、C ドライブは「C:\」と指定します。
lpVolumeNameBuffer
1 個のバッファへのポインタを指定します。関数から制御が返ると、このバッファに、指定されたボリュームの名前が格納されます。この情報が不要なときは、NULL を指定してください。
nVolumeNameSize
ボリューム名バッファのサイズを、TCHAR 単位で指定します。lpVolumeNameBuffer パラメータで NULL を指定した場合、nVolumeNameSize パラメータは無視されます。
lpVolumeSerialNumber
1 個の変数へのポインタを指定します。関数から制御が返ると、この変数に、ボリュームのシリアル番号が格納されます。シリアル番号の情報が不要な場合、NULL を指定してください。

Windows 95/98:問い合わせたボリュームがネットワークドライブの場合、シリアル番号は返りません。

lpMaximumComponentLength
1 個の変数へのポインタを指定します。関数から制御が返ると、この変数に、指定したファイルシステムがサポートしているファイル名コンポーネントの最大長が TCHAR 単位で格納されます。ファイル名コンポーネントとは、ファイル名(パス名)のうち、両側が円記号(\)で挟まれた部分のことを指します。

*lpMaximumComponentLength が指す変数に格納された値を使うと、指定したファイルシステムが長いファイル名をサポートしているかどうかを判断できます。たとえば、長いファイル名をサポートしている FAT ファイルシステム(VFAT)に対してこの関数を実行すると、以前の 8.3 の値ではなく、255 という値が返ります。NTFS ファイルシステムでも、長いファイル名がサポートされています。

lpFileSystemFlags
1 個の変数へのポインタを指定します。関数から制御が返ると、この変数に、指定したファイルシステムに関連付けられたフラグが格納されます。次の値の任意の組み合わせが格納されます。ただし、FS_FILE_COMPRESSION と FS_VOL_IS_COMPRESSED は相互に排他的で、これらの両方が同時に返ることはありません。
意味
FS_CASE_IS_PRESERVEDファイルシステムは、ディスクにファイル名を記録するときに、大文字と小文字を区別して保存します。
FS_CASE_SENSITIVEファイルシステムは、ファイル名の大文字と小文字の区別をサポートしています。
FS_UNICODE_STORED_ON_DISKファイルシステムは、Unicode のファイル名をサポートしていて、ディスク上でも正しく表示されます。
FS_PERSISTENT_ACLSファイルシステムは、ACL(アクセス制御リスト)の保存と適用を行います。たとえば、NTFS は ACL の保存と適用を行いますが、FAT は ACL をサポートしていません。
FS_FILE_COMPRESSIONファイルシステムは、ファイルベースの圧縮をサポートしています。
FS_VOL_IS_COMPRESSED指定されたボリュームは、圧縮ボリューム(たとえば、DoubleSpace のボリューム)です。
FILE_NAMED_STREAMSファイルシステムは、名前付きストリームをサポートしています。
FILE_SUPPORTS_ENCRYPTIONファイルシステムは、暗号化ファイルシステム(EFS)をサポートしています。
FILE_SUPPORTS_OBJECT_IDSファイルシステムは、オブジェクト識別子をサポートしています。
FILE_SUPPORTS_REPARSE_POINTSファイルシステムは、再解析ポイントをサポートしています。
FILE_SUPPORTS_SPARSE_FILESファイルシステムは、スパースファイル(疎なファイル、未使用の領域が多い、または同じ値が長く続くファイル)をサポートしています。
FILE_VOLUME_QUOTASファイルシステムは、ディスククォータ(ディスク使用量の割り当て機能)をサポートしています。

lpFileSystemNameBuffer
1 個のバッファへのポインタを指定します。関数から制御が返ると、このバッファに、ファイルシステムの名前("FAT"、"NTFS" など)が格納されます。この情報が不要な場合、NULL を指定してください。
nFileSystemNameSize
システム名バッファの長さを、TCHAR 単位で指定します。lpFileSystemNameBuffer パラメータで NULL を指定した場合、nFileSystemNameSize パラメータは無視されます。

戻り値

要求されたすべての情報を取得できた場合、0 以外の値が返ります。

それ以外の場合は、0 が返ります。拡張エラー情報を取得するには、 関数を使います。

解説

フロッピーディスクの入っていないフロッピーディスクドライブや、CD-ROM の入っていない CD-ROM ドライブに関する情報を取得しようとすると、システムはメッセージボックスを表示し、メディアを挿入するよう促します。このメッセージボックスの表示を回避するには、SEM_FAILCRITICALERRORS を指定して 関数を呼び出してください。

FS_VOL_IS_COMPRESSED フラグは、指定されたボリュームが圧縮ボリュームであるかどうかを示す唯一の指標です。ボリュームベースの圧縮がサポートされている場合でも、ファイルシステムの名前は何も変化しません。たとえば、DoubleSpace のボリュームでは、FS_VOL_IS_COMPRESSED フラグがセットされます。ボリュームベースの圧縮機能では、(ファイル単位で個別に指定するのではなく)ボリューム全体が圧縮されているか、ボリューム全体が圧縮されていない(どのファイルも圧縮されていない)か、そのどちらかになります。

FS_FILE_COMPRESSION フラグは、ファイルシステムがファイルベースの圧縮をサポートしているかどうかを示します。ファイルベースの圧縮では、圧縮するかどうかを個別のファイル単位で指定できます。

FS_VOL_IS_COMPRESSED フラグと FS_FILE_COMPRESSION フラグは相互に排他的であり、同時にセットされることはありません。

lpMaximumComponentLength パラメータが指す変数に格納された、コンポーネントの最大長は、ボリュームが長いファイル名(従来の FAT や他のファイルシステムより長い名前)をサポートしているかどうかを示す唯一の指標です。ボリュームが長いファイル名をサポートしている場合でも、ファイルシステムの名前は何も変化しません。

GetCompressedFileSize 関数は、ファイルの圧縮済みのサイズを取得します(ファイルが圧縮されている場合)。GetFileAttributes 関数は、個別のファイルが圧縮されているかどうかを判断します。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winbase.h 内で宣言、Windows.h をインクルード
インポートライブラリ:Kernel32.lib を使用
Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装

参照

GetCompressedFileSize, GetFileAttributes, , SetVolumeLabel

表示: