BY_HANDLE_FILE_INFORMATION 構造体 (fileapi.h)
GetFileInformationByHandle 関数が取得する情報が含まれます。
構文
typedef struct _BY_HANDLE_FILE_INFORMATION {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD dwVolumeSerialNumber;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD nNumberOfLinks;
DWORD nFileIndexHigh;
DWORD nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
メンバー
dwFileAttributes
ファイル属性。 使用できる値とその説明については、「 ファイル属性定数」を参照してください。
ftCreationTime
ファイルまたはディレクトリを作成するタイミングを指定する FILETIME 構造体。 基になるファイル システムで作成時刻がサポートされていない場合、このメンバーは 0 (0) になります。
ftLastAccessTime
FILETIME 構造体。 ファイルの場合、 構造体は、ファイルが最後に読み取られたり書き込まれたりする時刻を指定します。 ディレクトリの場合、 構造体は、ディレクトリを作成するタイミングを指定します。 ファイルとディレクトリの両方で、指定した日付は正しいですが、時刻は常に午前 0 時に設定されます。 基になるファイル システムが最後のアクセス時刻をサポートしていない場合、このメンバーは 0 (0) になります。
ftLastWriteTime
FILETIME 構造体。 ファイルの場合、 構造体は、ファイルが最後に書き込まれる時刻を指定します。 ディレクトリの場合、 構造体は、ディレクトリを作成するタイミングを指定します。 基になるファイル システムが最後の書き込み時刻をサポートしていない場合、このメンバーは 0 (0) になります。
dwVolumeSerialNumber
ファイルを含むボリュームのシリアル番号。
nFileSizeHigh
ファイル サイズの上位部分。
nFileSizeLow
ファイル サイズの下位部分。
nNumberOfLinks
このファイルへのリンクの数。 FAT ファイル システムの場合、このメンバーは常に 1 です。 NTFS ファイル システムの場合は、1 を超えることができます。
nFileIndexHigh
ファイルに関連付けられている一意識別子の上位部分。 詳細については、「 nFileIndexLow」を参照してください。
nFileIndexLow
ファイルに関連付けられている一意識別子の下位部分。
識別子 (低部と高部) とボリュームシリアル番号は、1 台のコンピューター上のファイルを一意に識別します。 開いている 2 つのハンドルが同じファイルを表しているかどうかを判断するには、各ファイルの識別子とボリュームシリアル番号を組み合わせて比較します。
Windows Server 2012で導入された ReFS ファイル システムには、128 ビットのファイル識別子が含まれています。 128 ビットのファイル識別子を取得するには、FileIdInfo を使用して GetFileInformationByHandleEx 関数を使用して、FILE_ID_INFO構造体を取得します。 この構造体の 64 ビット識別子は、ReFS で一意であるとは限りません。
注釈
nFileIndexHigh メンバーと nFileIndexLow メンバーに格納されている識別子は、ファイル ID と呼ばれます。 ファイル ID のサポートは、ファイル システム固有です。 ファイル ID は時間の経過と同時に一意であるとは限りません。ファイル システムは自由に再利用できるためです。 場合によっては、ファイルのファイル ID が時間の経過と同時に変更される可能性があります。
FAT ファイル システムでは、ファイル ID は、含むディレクトリの最初のクラスターと、ファイルのエントリのディレクトリ内のバイト オフセットから生成されます。 一部の最適化製品では、このバイト オフセットが変更されます。 (Windows のインボックス最適化では最適化されません。)したがって、FAT ファイル ID は時間の経過と同時に変化する可能性があります。 FAT ファイル システム内のファイルの名前を変更すると、新しいファイル名が古いファイル名よりも長い場合にのみ、ファイル ID を変更することもできます。
NTFS ファイル システムでは、ファイルは削除されるまで同じファイル ID を保持します。 ReplaceFile 関数を使用すると、ファイル ID を変更せずに、1 つのファイルを別のファイルに 置き換 えることができます。 ただし、置き換えられたファイルではなく、置換ファイルのファイル ID は、結果のファイルのファイル ID として保持されます。
すべてのファイル・システムが作成時刻と最終アクセス時刻を記録できるわけではありません。また、すべてのファイル・システムが同じ方法で記録するわけではありません。 たとえば、Windows FAT ファイル システムでは、作成時間の解像度は 10 ミリ秒、書き込み時間の解像度は 2 秒、アクセス時間の解像度は 1 日 (アクセス日) です。 NTFS ファイル システムでは、アクセス時間の解像度は 1 時間です。 詳細については、「ファイル時間」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | fileapi.h (Windows.h を含む) |