Freigeben über


_stat- und _wstat-Funktionen

Rufen Sie Statusinformationen über eine Datei ab.

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(str
   const char *path,
   struct _stat32i64 *buffer 
);
int _stat64i32(str
   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
    Zeiger auf eine Zeichenfolge, die den Pfad der vorhandenen Datei bzw. des Verzeichnisses enthält.

  • buffer
    So strukturieren Zeiger, dass Speicher entsteht.

Rückgabewert

Jede dieser Funktionen gibt 0 zurück, wenn die DateiStatusinformationen abgerufen. Bei dem Rückgabewert von 1 angibt einem Fehler, in diesem Fall errno auf ENOENT festgelegt wird und angibt, ob der Dateiname oder Pfad, nicht gefunden werden konnte. Bei dem Rückgabewert EINVAL gibt ein ungültiges Parameter an; errno wird auch in diesem Fall auf EINVAL festgelegt.

Hinweis

Wenn path die Position eines Verzeichnisses enthält, kann es über einen nachgestellten umgekehrten Schrägstrich enthalten.Wenn dies der Fall ist, wird -1 zurückgegeben und errno ist auf ENOENT festgelegt.

Weitere Informationen zu diesen und anderen Rückgabecodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Der Datumsstempel einer Datei kann dargestellt werden, wenn er später als Mitternacht, am 1. Januar 1970 und vor 23:59 ist: 59 am 31. Dezember 3000, UTC, es sei denn, Sie _stat32 oder _wstat32 verwenden, oder weisen _USE_32BIT_TIME_T definiert, in diesem Fall das Datum nur bis 03:14 dargestellt werden kann: Am 7. Januar 19 2038, UTC.

Hinweise

Die _stat-Funktion ruft Informationen über die Datei oder das Verzeichnis ein, die von path angegeben wird und speichert sie in der Struktur, die auf den durch buffer gezeigt wird. _stat behandelt automatisch Mehrbyte-Zeichenfolgen-Argumente entsprechend und derzeit erkennt Mehrbytezeichensequenzen entsprechend der Mehrbyte-Codepage.

_wstat ist eine Breitzeichenversion von _stat. Das path-Argument für _wstat ist eine Breitzeichenfolge. _wstat und _stat identisch verhalten sich, dass _wstat nicht behandelt Mehrbyte-Zeichenfolgen.

Variationen dieser -or-64-Bit-Zeittypen der Funktionsunterstützungs 32 und 32 -or-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 angibt, ob die Dateigröße als 32-Bit- oder 64-Bit-ganzeZahl dargestellt wird.

_stat entspricht _stat64i32, struct und _stat enthält eine 64-Bit-Zeit. Dies gilt, es sei denn, _USE_32BIT_TIME_T definiert wird, in diesem Fall das alte Verhalten gültig ist; _stat verwendet eine 32-Bit-Zeit, struct und _stat enthält eine 32-Bit-Zeit. Das gilt für _stati64 erfüllt.

Hinweis

_wstat funktioniert nicht mit symbolischen Links Windows Vista.In diesen Fällen gibt _wstat immer über eine Größe von 0._stat funktioniert ordnungsgemäß mit symbolischen Links.

Diese Funktion überprüft ihre Parameter. Wenn entweder path oder bufferNULL ist, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben.

Die Zeit Typs fest und fügen Sie Längen-Typ-Variationen von _stat

Funktionen

_USE_32BIT_TIME_T definiert?

Zeittyp

Dateilängentyp

_stat, _wstat

Nicht definiert

64 Bit

32 Bit

_stat, _wstat

Definiert

32 Bit

32 Bit

_stat32, _wstat32

Beeinflusst weder von der Makrodefinition

32 Bit

32 Bit

_stat64, _wstat64

Beeinflusst weder von der Makrodefinition

64 Bit

64 Bit

_stati64, _wstati64

Nicht definiert

64 Bit

64 Bit

_stati64, _wstati64

Definiert

32 Bit

64 Bit

_stat32i64, _wstat32i64

Beeinflusst weder von der Makrodefinition

32 Bit

64 Bit

_stat64i32, _wstat64i32

Beeinflusst weder von der Makrodefinition

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-Struktur, die in SYS\STAT.H, enthält die folgenden Felder.

  • st_gid
    Numerischer Bezeichner der Gruppe, die die Datei (UNIX-Besonderen) dieses Feld besitzt, ist immer auf Windows-Systemen null. Eine neu zugewiesene Datei wird als Windows-Datei klassifiziert.

  • st_atime
    Zeit des letzten Zugriffs der Datei. Gültig auf NTFS jedoch nicht auf FAT formatierte Laufwerke.

  • st_ctime
    Zeitpunkt der Erstellung der Datei. Gültig auf NTFS jedoch nicht auf FAT formatierte Laufwerke.

  • st_dev
    Laufwerknummer 5-Datenträgerkonfiguration, der die Datei (entspricht st_rdev) enthält.

  • st_ino
    Nummer des Informationsknotens ( inode) für die Datei (UNIX-Besondere). Klicken Sie UNIX-Dateisystemen beschreibt inode das Datums- und -Zeitstempel, Berechtigungen und Inhalt. Wenn Dateien beieinander hart-verknüpft werden, geben sie gleichen inode. inode und st_ino, verfügt über keine Bedeutung im FAT, im HPFS oder in den NTFS-Dateisystemen.

  • st_mode
    Bitmaske zu Dateimodusinformation. Das _S_IFDIR Ausführungsbits wird festgelegt, wenn path angibt; einem Verzeichnis das Bit _S_IFREG wird festgelegt, wenn path einer normalen Datei oder einem Gerät angibt. Benutzerlese-schreibbits werden entsprechend dem Berechtigungsmodus der Datei festgelegt; Benutzer führen Bits festgelegt werden entsprechend der Dateinamenerweiterung aus.

  • st_mtime
    Zeitpunkt der letzten Änderung der Datei.

  • st_nlink
    Immer 1 auf NichtNTFS Dateisystemen.

  • st_rdev
    Laufwerknummer 5-Datenträgerkonfiguration, der die Datei (entspricht st_dev) enthält.

  • st_size
    Größe einer Datei in Bytes; eine 64-Bit-Ganzzahl für Variationen mit dem Suffix i64**.**

  • st_uid
    Numerischer Bezeichner des Benutzers, der Datei (UNIX-Besonderen) besitzt. Dieses Feld ist immer auf Windows-Systemen null. Eine neu zugewiesene Datei wird als Windows-Datei klassifiziert.

Wenn path ein Objekt verweist, sind st_size, die verschiedenen Zeitfeldern, st_dev und die st_rdev Felder in der _stat-Struktur keine Bedeutung. Da STAT.H den _dev_t-Typs, der in TYPES.H definiert ist, müssen Sie TYPES.H vor STAT.H im Code.

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>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

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 );
   }
}
  

.NET Framework-Entsprechung

Siehe auch

Referenz

Dateibehandlung

_access, _waccess

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

_getmbcp

_setmbcp