次の方法で共有


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場合は、現在のディレクトリのルートが使用されます。 末尾の円記号が必要です。 たとえば、\\MyServer\MyShare を "\\MyServer\MyShare\" に、C ドライブを "C:\" と指定します。

[out, optional] lpVolumeNameBuffer

指定したボリュームの名前を受け取るバッファーへのポインター。 バッファー サイズは、nVolumeNameSize パラメーターによって指定されます。

[in] nVolumeNameSize

ボリューム名バッファーの長さ (TCHAR)。 最大バッファー サイズは MAX_PATHs+1 です。

ボリューム名バッファーが指定されていない場合、このパラメーターは無視されます。

[out, optional] lpVolumeSerialNumber

ボリュームのシリアル番号を受け取る変数へのポインター。

シリアル番号が不要な場合、このパラメーターは NULL を できます。

この関数は、ハード ディスクのフォーマット時にオペレーティング システムが割り当てるボリュームのシリアル番号を返します。 製造元が割り当てるハード ディスクのシリアル番号をプログラムで取得するには、SerialNumberWindows Management Instrumentation (WMI) Win32_PhysicalMedia プロパティを使用します。

[out, optional] lpMaximumComponentLength

指定したファイル システムがサポートするファイル名コンポーネントの最大長 (TCHAR) を受け取る変数へのポインター。

ファイル名コンポーネントは、円記号の間のファイル名の部分です。

*lpMaximumComponentLength が指す変数に格納されている値は、指定されたファイル システムが長い名前をサポートしていることを示すために使用されます。 たとえば、長い名前をサポートする FAT ファイル システムの場合、関数は前の 8.3 インジケーターではなく値 255 を格納します。 長い名前は、NTFS ファイル システムを使用するシステムでもサポートできます。

[out, optional] lpFileSystemFlags

指定したファイル システムに関連付けられているフラグを受け取る変数へのポインター。

このパラメーターには、次のフラグを 1 つ以上指定できます。 ただし、FILE_FILE_COMPRESSIONFILE_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 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 はボリューム管理機能をサポートしていません。

トランザクション操作

ボリュームがファイル システム トランザクションをサポートしている場合、この関数は lpFileSystemFlagsFILE_SUPPORTS_TRANSACTIONS を返します。

手記

fileapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetVolumeInformation を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー fileapi.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

KTM について

ファイル暗号化

GetCompressedFileSize を する

GetFileAttributes

GetVolumeInformationByHandleW

SetErrorMode の

SetVolumeLabel

ボリューム管理機能 の