_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