Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

INFO : Utilisation de la Structure FILETIME

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

188768
Résumé
Une heure de fichier représente la date et une heure à laquelle un fichier donné a étédernier créé, accessible ou la dernière écriture dans. Une heure de fichier est stockée dans unStructure FILETIME. Cette structure est utilisée avec les différents appels d'API Win32.
Plus d'informations
La structure FILETIME représente le nombre d'intervalles de 100 nanosecondes.depuis le 1er janvier 1601. La structure se compose de deux valeurs de 32 bits quis'associent pour former une seule valeur 64 bits.
   typedef struct _FILETIME {     DWORD dwLowDateTime;     DWORD dwHighDateTime;   } FILETIME;				
Notez que la structure FILETIME est basée sur des intervalles de 100 nanosecondes. Ilest utile de définir les symboles suivants lorsque vous travaillez avec les heures de fichier.Par exemple :
   #define _SECOND ((int64) 10000000)   #define _MINUTE (60 * _SECOND)   #define _HOUR   (60 * _MINUTE)   #define _DAY    (24 * _HOUR)				

Exécution d'arithmétique du dont l'heure de fichier

Il est souvent nécessaire d'effectuer une opération arithmétique simple sur heures de fichier. Pourexemple, vous devrez peut-être savoir quand un fichier est de 30 jours. Pour effectuer unearithmétique sur une heure de fichier, vous devez convertir FILETIME en un mot quadruple(un entier 64 bits), effectuez les opérations arithmétiques et puis convertir le résultatretour à FILETIME.

En supposant que m est une structure FILETIME contenant l'heure de création d'un fichierl'exemple de code suivant ajoute 30 jours à la fois :
   ULONGLONG qwResult;   // Copy the time into a quadword.   qwResult = (((ULONGLONG) ft.dwHighDateTime) << 32) + ft.dwLowDateTime;   // Add 30 days.   qwResult += 30 * _DAY;   // Copy the result back into the FILETIME structure.   ft.dwLowDateTime  = (DWORD) (qwResult & 0xFFFFFFFF );   ft.dwHighDateTime = (DWORD) (qwResult >> 32 );				

Définition des heures de fichier

Vous pouvez définir les heures de fichier pour un fichier en utilisant la fonction SetFileTime().
   BOOL SetFileTime(     HANDLE hFile,                     // Handle to the file.     CONST FILETIME *lpCreationTime,   // Time the file was created.     CONST FILETIME *lpLastAccessTime, // Time the file was last accessed.     CONST FILETIME *lpLastWriteTime   // Time the file was last                                       // written to.   );				
Cette fonction vous permet de modifier création, dernier accès et heures de dernière écrituresans modifier le contenu du fichier. Pour utiliser cette fonction, vous devezavoir un handle pour le fichier ouvert. Ce handle de fichier peut être obtenu d'unl'appel à CreateFile() ou OpenFile(). Le fichier doit être ouvert avecAccès GENERIC_WRITE. Après avoir défini les heures de fichier, vous devezlibérer le handle de fichier via un appel à CloseHandle().

En supposant que szFilename est un nom de fichier valide et m est une structure FILETIME, lesuivant l'exemple de code définit la date de création du fichier à la foiscontenues dans le texte intégral :
   BOOL bResult;   HANDLE hFile = CreateFile( szFilename,      GENERIC_WRITE, // The file must be opened with write access.      FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );   if (hFile != INVALID_HANDLE_VALUE) {      bResult = SetFileTime( hFile, &ft, NULL, NULL );      CloseHandle(hFile);   }				

Affichage des heures de fichier

L'heure de fichier est basé sur le temps universel coordonné (UTC). Temps basée sur l'heure UTCest faiblement défini comme la date et l'heure du jour dans Greenwich,Angleterre. Vous souhaiterez probablement afficher l'heure de fichier par rapport àl'heure locale (c'est-à-dire, la date et l'heure du jour pour votre fuseau horaire). PourPour ce faire, vous pouvez utiliser FileTimeToLocalFileTime() comme suit :
   BOOL FileTimeToLocalFileTime(     CONST FILETIME *lpFileTime,  // Pointer to UTC file time to convert.     LPFILETIME lpLocalFileTime   // Pointer to converted file time.   );
Notez que cette fonction utilise les paramètres actuels pour le fuseau horaire etl'heure d'été. Par conséquent, s'il s'agit de l'heure, celafonction prend l'heure d'été en considération, même si le temps de voussont la conversion est en heure standard.

Pour afficher l'heure du fichier de manière explicite, vous devez tout d'abord le convertirà l'heure de système en utilisant FileTimeToSystemTime() comme suit :
   BOOL FileTimeToSystemTime(     CONST FILETIME *lpFileTime, // Pointer to file time to convert.     LPSYSTEMTIME lpSystemTime   // Pointer to structure to receive   );                            // system time.				
La structure SYSTEMTIME représente une date et heure à l'aide individuellemembres pour le mois, jour, année, jour de la semaine, heure, minute, seconde, etmilliseconde.

Il est également préférable d'afficher la date et l'heure dans un format cohérentavec les paramètres régionaux sélectionné pour le système. Vous pouvez le faire à l'aide deGetDateFormat() et GetTimeFormat() comme suit :
   int GetDateFormat(     LCID Locale,              // Locale for which date is to be formatted.     DWORD dwFlags,            // Flags specifying function options.     CONST SYSTEMTIME *lpDate, // Date to be formatted.     LPCTSTR lpFormat,         // Date format string.     LPTSTR lpDateStr,         // Buffer for storing formatted string.     int cchDate               // Size of buffer.   );   int GetTimeFormat(     LCID Locale,              // Locale for which time is to be formatted.     DWORD dwFlags,            // Flags specifying function options.     CONST SYSTEMTIME *lpTime, // Time to be formatted.     LPCTSTR lpFormat,         // Time format string.     LPTSTR lpTimeStr,         // Buffer for storing formatted string.     int cchTime               // Size of buffer.   );				
En passant LOCALE_USER_DEFAULT comme premier paramètre à ces fonctions,Encouragez-les à nous mettre en forme la date/heure passée en fonction de la valeur par défautformat pour les paramètres régionaux en cours. Dans ce cas, vous pouvez passer la valeur NULL leparamètres lpFormat.

En supposant que m est une structure FILETIME contenant une valeur UTC, le texte suivantexemple de code imprime la date stockée en texte intégral :
   SYSTEMTIME st;   char szLocalDate[255], szLocalTime[255];   FileTimeToLocalFileTime( &ft, &ft );   FileTimeToSystemTime( &ft, &st );   GetDateFormat( LOCALE_USER_DEFAULT, DATE_LONGDATE, &st, NULL,     szLocalDate, 255 );   GetTimeFormat( LOCALE_USER_DEFAULT, 0, &st, NULL, szLocalTime, 255 );   printf( "%s %s\n", szLocalDate, szLocalTime );				

Avertissement : Cet article a été traduit de manière automatique

Propriétés

ID d'article : 188768 - Dernière mise à jour : 06/24/2013 00:32:00 - Révision : 4.0

  • Microsoft Win32 Application Programming Interface
  • kbapi kbdatetime kbfileio kbinfo kbkernbase kbmt KB188768 KbMtfr
Commentaires