_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. Ein Rückgabewert von -1 gibt einen Fehler an, in diesem Fall errno auf ENOENT", der angibt, dass der Dateiname oder der 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 Rückgabecodes finden Sie unter , , _doserrno, _sys_errlistund _sys_nerr.errno

Der Datumsstempel einer Datei kann dargestellt werden, wenn er später als Mitternacht, 1. Januar 1970 und vor 23:59:59, 31. Dezember 3000, UTC dargestellt wird, es sei denn, Sie verwenden _stat32 oder _wstat32oder definiert _USE_32BIT_TIME_Thaben, in diesem Fall kann das Datum nur bis 23:59:59:59 Januar 18, 2038, UTC dargestellt werden.

Hinweise

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 der Ausnahme, dass _wstat multibyte-Zeichenfolgen nicht behandelt werden.

Variationen 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 i64und gibt an, ob die Dateigröße als ganze Zahl mit 32 Bit oder 64 Bit dargestellt ist.

_stat_stat64i32entspricht , und struct _stat enthält eine 64-Bit-Zeit, es sei denn_USE_32BIT_TIME_T, es wird definiert, in diesem Fall ist das alte Verhalten in Kraft; _stat verwendet eine 32-Bit-Zeit und struct _stat enthält eine 32-Bit-Zeit. Gleiches gilt auch für _stati64.

Hinweis

_wstat funktioniert nicht mit symbolischen Windows Vista-Verknüpfungen. In diesen Fällen meldet _wstat immer die Dateigröße „0“. _stat funktioniert mit symbolischen Verknüpfungen nicht ordnungsgemäß. Die _statFamilie der Funktionen, die in Visual Studio 2015 verwendet werden CreateFile , statt FindFirstFile wie in Visual Studio 2013 und früher. Dies bedeutet, dass _stat auf einem Pfad, der mit einem Schrägstrich endet, erfolgreich ist, wenn sich der Pfad auf ein Verzeichnis bezieht, im Gegensatz zu vor dem Zeitpunkt, an dem die Funktion mit "Set" ENOENTfehler würdeerrno.

Diese Funktion überprüft ihre Parameter. Wenn eine oder buffer mehrere path Parameter vorhanden sindNULL, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Zeittyp- und Dateilängenvariationen von _stat

Funktionen _USE_32BIT_TIME_T Definiert Uhrzeittyp Dateilängentyp
_stat, _wstat Nicht definiert 64-Bit 32-Bit
_stat, _wstat definierte 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 definierte 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

Generische Textroutinzuordnungen

TCHAR.H Routine _UNICODE und _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.Hder Tabelle definierte 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 Byte; 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 der typ verwendet wird, der _dev_t in TYPES.Hdefiniert ist, müssen Sie vor dem STAT.H Code einschließenTYPES.H.

Anforderungen

Routine 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>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

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