_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32, _wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32
Abrufen von Statusinformationen zu einer Datei.
Syntax
int _stat(
const char *path,
struct _stat *buffer
);
int _stat32(
const char *path,
struct __stat32 *buffer
);
int _stat64(
const char *path,
struct __stat64 *buffer
);
int _stati64(
const char *path,
struct _stati64 *buffer
);
int _stat32i64(
const char *path,
struct _stat32i64 *buffer
);
int _stat64i32(
const char *path,
struct _stat64i32 *buffer
);
int _wstat(
const wchar_t *path,
struct _stat *buffer
);
int _wstat32(
const wchar_t *path,
struct __stat32 *buffer
);
int _wstat64(
const wchar_t *path,
struct __stat64 *buffer
);
int _wstati64(
const wchar_t *path,
struct _stati64 *buffer
);
int _wstat32i64(
const wchar_t *path,
struct _stat32i64 *buffer
);
int _wstat64i32(
const wchar_t *path,
struct _stat64i32 *buffer
);
Parameter
path
Ein Zeiger auf eine Zeichenfolge, die den Pfad einer vorhandenen Datei oder eines vorhandenen Verzeichnisses enthält.
buffer
Ein Zeiger auf die Struktur, in der die Ergebnisse gespeichert werden.
Rückgabewert
Jede dieser Funktionen gibt „0“ zurück, wenn die Dateistatusinformationen abgerufen werden. Der Rückgabewert -1 gibt einen Fehler an. In diesem Fall errno wird auf ENOENTfestgelegt, was angibt, dass der Dateiname oder Pfad nicht gefunden werden konnte. Der Rückgabewert EINVAL zeigt einen ungültigen Parameter an; errno wird in diesem Fall ebenfalls auf EINVAL festgelegt.
Weitere Informationen zu diesem und anderen Rückgabecodes finden Sie _doserrnounter , , und _sys_nerr. errno_sys_errlist
Der Datumsstempel einer Datei kann alle Daten nach Mitternacht am 1. Januar 1970 und vor 23:59:59 Uhr am 31. Dezember 3000 UTC darstellen, sofern Sie nicht _stat32 oder _wstat32 verwenden oder _USE_32BIT_TIME_T definiert haben. In diesem Fall kann das Datum nur einen Zeitraum bis 23:59:59 Uhr am 18. Januar 2038 UTC darstellen.
Bemerkungen
Die _stat -Funktion ruft Informationen zur durch path angegebenen Datei bzw. dem angegebenen Verzeichnis ab und speichert sie in der Struktur, auf die bufferverweist. _stat behandelt Multibyte-Zeichenfolgenargumente automatisch richtig. Die Erkennung von Multibyte-Zeichenfolgen erfolgt auf der Grundlage der aktuell verwendeten Multibyte-Codeseite.
_wstat ist eine Breitzeichenversion von _stat. Das path -Argument für _wstat ist eine Breitzeichenfolge. _wstat und _stat verhalten sich identisch, mit dem Unterschied, dass _wstat keine Multibyte-Zeichenfolgen verarbeitet.
Varianten dieser Funktionen unterstützen 32-Bit- oder 64-Bit-Zeittypen und 32-Bit- oder 64-Bit-Dateilängen. Das erste numerische Suffix (32 oder 64) gibt die Größe des verwendeten Zeittyps an. Das zweite Suffix ist entweder i32 oder i64 und gibt an, ob die Dateigröße als 32-Bit- oder 64-Bit-Ganzzahl dargestellt wird.
_stat entspricht _stat64i32, und struct_stat enthält eine 64-Bit-Zeit. Dies gilt, sofern nicht _USE_32BIT_TIME_T definiert ist. In diesem Fall ist das alte Verhalten wirksam, _stat verwendet eine 32-Bit-Zeit und struct_stat enthält eine 32-Bit-Zeit. Gleiches gilt auch für _stati64.
Hinweis
_wstatfunktioniert nicht mit symbolischen Verknüpfungen Windows Vista. In diesen Fällen meldet _wstat immer die Dateigröße „0“. _stat funktioniert mit symbolischen Verknüpfungen nicht ordnungsgemäß.
Diese Funktion überprüft ihre Parameter. Wenn entweder path oder buffer den Wert NULLaufweist, wird der Handler für ungültige Parameter aufgerufen, wie unter Parameter Validationverweist.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dies ändern, erfahren Sie unter Globaler Status in der CRT.
Abweichungen von Zeittyp und Dateilängentyp _stat
| Funktionen | _USE_32BIT_TIME_T definiert? | Uhrzeittyp | Dateilängentyp |
|---|---|---|---|
_stat, _wstat |
Nicht definiert | 64 Bit | 32-Bit |
_stat, _wstat |
Definiert | 32 Bit | 32 Bit |
_stat32, _wstat32 |
Nicht von der Makrodefinition betroffen | 32 Bit | 32 Bit |
_stat64, _wstat64 |
Nicht von der Makrodefinition betroffen | 64 Bit | 64 Bit |
_stati64, _wstati64 |
Nicht definiert | 64 Bit | 64 Bit |
_stati64, _wstati64 |
Definiert | 32-Bit | 64-Bit |
_stat32i64, _wstat32i64 |
Nicht von der Makrodefinition betroffen | 32-Bit | 64-Bit |
_stat64i32, _wstat64i32 |
Nicht von der Makrodefinition betroffen | 64 Bit | 32-Bit |
Zuordnung generischer Textroutinen
TCHAR.H Routine |
_UNICODE&_MBCS nicht definiert |
_MBCS Definiert |
_UNICODE Definiert |
|---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
Die _stat in SYS\STAT.Hdefinierte -Struktur enthält die folgenden Felder.
| Feld | Beschreibung |
|---|---|
st_gid |
Numerischer Bezeichner der Gruppe, die die Datei besitzt (UNIX-spezifisch). Dieses Feld weist auf Windows-Systemen immer den Wert „0“ (null) auf. Eine umgeleitete Datei wird als Windows-Datei klassifiziert. |
st_atime |
Zeitpunkt des letzten Zugriffs auf die Datei. Gültig auf NTFS-, aber nicht auf FAT-formatierten Laufwerken. |
st_ctime |
Uhrzeit der Dateierstellung. Gültig auf NTFS-, aber nicht auf FAT-formatierten Laufwerken. |
st_dev |
Laufwerksnummer des Datenträgers, der die Datei enthält (gleichbedeutend mit st_rdev). |
st_ino |
Anzahl der Informationsknoten (der inodes) für die Datei (UNIX-spezifisch). Bei UNIX-Dateisystemen beschreibt der inode die Dateistempel für Datum und Uhrzeit, die Berechtigungen und den Inhalt. Wenn Dateien durch einen festen Link miteinander verknüpft sind, besitzen sie den gleichen inode. Der inodeund daher auch st_inoist bei den Dateisystemen FAT, HPFS oder NTFS ohne Bedeutung. |
st_mode |
Bitmaske für Dateimodusinformationen. Das _S_IFDIR -Bit ist festgelegt, wenn path ein Verzeichnis angibt; das _S_IFREG -Bit ist festgelegt, wenn path eine gewöhnliche Datei oder ein Gerät angibt. Lese-/Schreibbits für Benutzer werden entsprechend dem Berechtigungsmodus der Datei festgelegt; Ausführungsbits für Benutzer werden entsprechend der Dateierweiterung festgelegt. |
st_mtime |
Uhrzeit der letzten Änderung der Datei. |
st_nlink |
Bei Nicht-NTFS-Dateisystemen immer „1“. |
st_rdev |
Laufwerksnummer des Datenträgers, der die Datei enthält (gleichbedeutend mit st_dev). |
st_size |
Größe der Datei in Bytes; eine 64-Bit-Ganzzahl für Variationen mit dem i64 Suffix. |
st_uid |
Numerischer Bezeichner des Benutzers, der die Datei besitzt (UNIX-spezifisch). Dieses Feld hat bei Windows-Systemen immer den Wert „0“. Eine umgeleitete Datei wird als Windows-Datei klassifiziert. |
Wenn path auf ein Gerät verweist, haben die Felder st_size, die verschiedenen Zeitfelder, st_devund st_rdev in der _stat -Struktur keine Bedeutung. Da STAT.H den _dev_t in TYPES.Hdefinierten Typ verwendet, müssen Sie vorher STAT.H in Ihren Code einschließenTYPES.H.
Anforderungen
| -Routine zurückgegebener Wert | Erforderlicher Header | Optionale Header |
|---|---|---|
_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32 |
<sys/types.h> gefolgt von <sys/stat.h> |
<errno.h> |
_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32 |
<sys/types.h> gefolgt von <sys/stat.h> oder <wchar.h> |
<errno.h> |
Zusätzliche Informationen zur Kompatibilität finden Sie unter Compatibility.
Beispiel
// crt_stat.c
// This program uses the _stat function to
// report information about the file named crt_stat.c.
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
int main( void )
{
struct _stat buf;
int result;
char timebuf[26];
char* filename = "crt_stat.c";
errno_t err;
// Get data associated with "crt_stat.c":
result = _stat( filename, &buf );
// Check if statistics are valid:
if( result != 0 )
{
perror( "Problem getting information" );
switch (errno)
{
case ENOENT:
printf("File %s not found.\n", filename);
break;
case EINVAL:
printf("Invalid parameter to _stat.\n");
break;
default:
/* Should never be reached. */
printf("Unexpected error in _stat.\n");
}
}
else
{
// Output some of the statistics:
printf( "File size : %ld\n", buf.st_size );
printf( "Drive : %c:\n", buf.st_dev + 'A' );
err = ctime_s(timebuf, 26, &buf.st_mtime);
if (err)
{
printf("Invalid arguments to ctime_s.");
exit(1);
}
printf( "Time modified : %s", timebuf );
}
}
File size : 732
Drive : C:
Time modified : Thu Feb 07 14:39:36 2002
Siehe auch
Dateiverarbeitung
_access, _waccess
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_getmbcp
_setmbcp