mirror of
https://github.com/aaru-dps/fstester.git
synced 2025-12-16 19:24:39 +00:00
Set win32 timestamps using a for loop instead of repeating code.
This commit is contained in:
@@ -7,7 +7,7 @@ project(
|
||||
DESCRIPTION "Filesystem test creator for 32-bit and 64-bit Windows"
|
||||
LANGUAGES C)
|
||||
|
||||
set(PLATFORM_SOURCES attr.c deleted.c dirdepth.c filename.c files.c frag.c links.c os.c perms.c rsrcfork.c sparse.c time.c volume.c xattr.c attr.h rsrcfork.h xattr.h links.h volume.h)
|
||||
set(PLATFORM_SOURCES attr.c deleted.c dirdepth.c filename.c files.c frag.c links.c os.c perms.c rsrcfork.c sparse.c time.c volume.c xattr.c attr.h rsrcfork.h xattr.h links.h volume.h time.h)
|
||||
|
||||
set(EXECUTABLE_NAME "fssetter-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
|
||||
|
||||
@@ -41,6 +41,9 @@ Copyright (C) 2011-2021 Natalia Portillo
|
||||
#include <string.h>
|
||||
|
||||
#include "win32.h"
|
||||
|
||||
#include "time.h"
|
||||
|
||||
#include "../include/defs.h"
|
||||
|
||||
void Timestamps(const char* path)
|
||||
@@ -50,12 +53,10 @@ void Timestamps(const char* path)
|
||||
DWORD error;
|
||||
LPSTR lpRootPathName;
|
||||
size_t pathSize = strlen(path);
|
||||
FILETIME ftCreationTime;
|
||||
FILETIME ftLastAccessTime;
|
||||
FILETIME ftLastWriteTime;
|
||||
HANDLE h;
|
||||
DWORD rc, wRc, cRc, tRc;
|
||||
DWORD dwNumberOfBytesWritten;
|
||||
int i;
|
||||
|
||||
lpRootPathName = malloc(dwMaxNameSize);
|
||||
|
||||
@@ -99,293 +100,46 @@ void Timestamps(const char* path)
|
||||
|
||||
printf("Creating timestamped files.\n");
|
||||
|
||||
h = CreateFileA("MAXCTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
for(i = 0; i < KNOWN_WIN32_TIMESTAMPS; i++)
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, MAXDATETIME, "creation");
|
||||
ftCreationTime.dwHighDateTime = MAXTIMESTAMP;
|
||||
ftCreationTime.dwLowDateTime = MAXTIMESTAMP;
|
||||
h = CreateFileA(
|
||||
win32_timestamps[i].filename, dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, win32_timestamps[i].message, win32_timestamps[i].type);
|
||||
|
||||
ret = SetFileTime(h, &ftCreationTime, NULL, NULL);
|
||||
if(!ret) tRc = GetLastError();
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
if(strcmp(win32_timestamps[i].type, "creation") == 0)
|
||||
ret = SetFileTime(h, &win32_timestamps[i].ftCreationTime, NULL, NULL);
|
||||
else if(strcmp(win32_timestamps[i].type, "access") == 0)
|
||||
ret = SetFileTime(h, NULL, &win32_timestamps[i].ftLastAccessTime, NULL);
|
||||
else if(strcmp(win32_timestamps[i].type, "modification") == 0)
|
||||
ret = SetFileTime(h, NULL, NULL, &win32_timestamps[i].ftLastWriteTime);
|
||||
else
|
||||
tRc = -1;
|
||||
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n",
|
||||
win32_timestamps[i].filename,
|
||||
rc,
|
||||
wRc,
|
||||
cRc,
|
||||
tRc);
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MAXCTIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("MAXATIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, MAXDATETIME, "access");
|
||||
ftLastAccessTime.dwHighDateTime = MAXTIMESTAMP;
|
||||
ftLastAccessTime.dwLowDateTime = MAXTIMESTAMP;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, NULL, &ftLastAccessTime, NULL);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MAXATIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("MAXMTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, MAXDATETIME, "modification");
|
||||
ftLastWriteTime.dwHighDateTime = MAXTIMESTAMP;
|
||||
ftLastWriteTime.dwLowDateTime = MAXTIMESTAMP;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, NULL, NULL, &ftLastWriteTime);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MAXMTIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("MINCTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, MINDATETIME, "creation");
|
||||
ftCreationTime.dwHighDateTime = MINTIMESTAMP;
|
||||
ftCreationTime.dwLowDateTime = MINTIMESTAMP;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, &ftCreationTime, NULL, NULL);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MINCTIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("MINATIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, MINDATETIME, "access");
|
||||
ftLastAccessTime.dwHighDateTime = MINTIMESTAMP;
|
||||
ftLastAccessTime.dwLowDateTime = MINTIMESTAMP;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, NULL, &ftLastAccessTime, NULL);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MINATIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("MINMTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, MINDATETIME, "modification");
|
||||
ftLastWriteTime.dwHighDateTime = MINTIMESTAMP;
|
||||
ftLastWriteTime.dwLowDateTime = MINTIMESTAMP;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, NULL, NULL, &ftLastWriteTime);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MINMTIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("Y1KCTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, Y1KDATETIME, "creation");
|
||||
ftCreationTime.dwHighDateTime = TIMESTAMP_HI;
|
||||
ftCreationTime.dwLowDateTime = Y1KTIMESTAMP_LO;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, &ftCreationTime, NULL, NULL);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y1KCTIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("Y1KATIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, Y1KDATETIME, "access");
|
||||
ftLastAccessTime.dwHighDateTime = TIMESTAMP_HI;
|
||||
ftLastAccessTime.dwLowDateTime = Y1KTIMESTAMP_LO;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, NULL, &ftLastAccessTime, NULL);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y1KATIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("Y1KMTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, Y1KDATETIME, "modification");
|
||||
ftLastWriteTime.dwHighDateTime = TIMESTAMP_HI;
|
||||
ftLastWriteTime.dwLowDateTime = Y1KTIMESTAMP_LO;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, NULL, NULL, &ftLastWriteTime);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y1KMTIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("Y2KCTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, Y2KDATETIME, "creation");
|
||||
ftCreationTime.dwHighDateTime = TIMESTAMP_HI;
|
||||
ftCreationTime.dwLowDateTime = Y2KTIMESTAMP_LO;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, &ftCreationTime, NULL, NULL);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y2KCTIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("Y2KATIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, Y2KDATETIME, "access");
|
||||
ftLastAccessTime.dwHighDateTime = TIMESTAMP_HI;
|
||||
ftLastAccessTime.dwLowDateTime = Y2KTIMESTAMP_LO;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, NULL, &ftLastAccessTime, NULL);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y2KATIME", rc, wRc, cRc, tRc);
|
||||
|
||||
h = CreateFileA("Y2KMTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
rc = 0;
|
||||
wRc = 0;
|
||||
cRc = 0;
|
||||
tRc = 0;
|
||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||
else
|
||||
{
|
||||
memset(message, 0, 300);
|
||||
sprintf(message, DATETIME_FORMAT, Y1KDATETIME, "modification");
|
||||
ftLastWriteTime.dwHighDateTime = TIMESTAMP_HI;
|
||||
ftLastWriteTime.dwLowDateTime = Y2KTIMESTAMP_LO;
|
||||
|
||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||
if(!ret) wRc = GetLastError();
|
||||
|
||||
ret = SetFileTime(h, NULL, NULL, &ftLastWriteTime);
|
||||
if(!ret) tRc = GetLastError();
|
||||
|
||||
ret = CloseHandle(h);
|
||||
if(!ret) cRc = GetLastError();
|
||||
}
|
||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y2KMTIME", rc, wRc, cRc, tRc);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
48
setter/src/win32/time.h
Normal file
48
setter/src/win32/time.h
Normal file
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// Created by claunia on 11/3/21.
|
||||
//
|
||||
|
||||
#ifndef SETTER_SRC_WIN32_TIME_H_
|
||||
#define SETTER_SRC_WIN32_TIME_H_
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#define DATETIME_FORMAT "This file is dated %s for %s\r"
|
||||
#define MAXDATETIME "60056/05/28 05:36:11"
|
||||
#define MINDATETIME "1601/01/01 00:00:00"
|
||||
#define Y2KDATETIME "2000/01/01 00:00:00"
|
||||
#define Y1KDATETIME "1999/12/31 23:59:59"
|
||||
#define MAXTIMESTAMP 0xFFFFFFFF
|
||||
#define MINTIMESTAMP 0x00000000
|
||||
#define TIMESTAMP_HI 0x01BF53EB
|
||||
#define Y2KTIMESTAMP_LO 0x256D4000
|
||||
#define Y1KTIMESTAMP_LO 0x24D4A980
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char filename[9];
|
||||
FILETIME ftCreationTime;
|
||||
FILETIME ftLastAccessTime;
|
||||
FILETIME ftLastWriteTime;
|
||||
char type[13];
|
||||
char message[21];
|
||||
} win32_time_tests_t;
|
||||
|
||||
#define KNOWN_WIN32_TIMESTAMPS 12
|
||||
|
||||
static const win32_time_tests_t win32_timestamps[KNOWN_WIN32_TIMESTAMPS] = {
|
||||
{"MAXCTIME", {MAXTIMESTAMP, MAXTIMESTAMP}, {0, 0}, {0, 0}, "creation", MAXDATETIME},
|
||||
{"MAXATIME", {0, 0}, {MAXTIMESTAMP, MAXTIMESTAMP}, {0, 0}, "access", MAXDATETIME},
|
||||
{"MAXMTIME", {0, 0}, {0, 0}, {MAXTIMESTAMP, MAXTIMESTAMP}, "modification", MAXDATETIME},
|
||||
{"MINCTIME", {MINTIMESTAMP, MINTIMESTAMP}, {0, 0}, {0, 0}, "creation", MINDATETIME},
|
||||
{"MINATIME", {0, 0}, {MINTIMESTAMP, MINTIMESTAMP}, {0, 0}, "access", MINDATETIME},
|
||||
{"MINMTIME", {0, 0}, {0, 0}, {MINTIMESTAMP, MINTIMESTAMP}, "modification", MINDATETIME},
|
||||
{"Y1KCTIME", {Y1KTIMESTAMP_LO, TIMESTAMP_HI}, {0, 0}, {0, 0}, "creation", Y1KDATETIME},
|
||||
{"Y1KATIME", {0, 0}, {Y1KTIMESTAMP_LO, TIMESTAMP_HI}, {0, 0}, "access", Y1KDATETIME},
|
||||
{"Y1KMTIME", {0, 0}, {0, 0}, {Y1KTIMESTAMP_LO, TIMESTAMP_HI}, "modification", Y1KDATETIME},
|
||||
{"Y2KCTIME", {Y2KTIMESTAMP_LO, TIMESTAMP_HI}, {0, 0}, {0, 0}, "creation", Y2KDATETIME},
|
||||
{"Y2KATIME", {0, 0}, {Y2KTIMESTAMP_LO, TIMESTAMP_HI}, {0, 0}, "access", Y2KDATETIME},
|
||||
{"Y2KMTIME", {0, 0}, {0, 0}, {Y2KTIMESTAMP_LO, TIMESTAMP_HI}, "modification", Y2KDATETIME},
|
||||
};
|
||||
|
||||
#endif // SETTER_SRC_WIN32_TIME_H_
|
||||
@@ -229,17 +229,6 @@ typedef struct _WINNT_FILE_ZERO_DATA_INFORMATION
|
||||
} WINNT_FILE_ZERO_DATA_INFORMATION, *PWINNT_FILE_ZERO_DATA_INFORMATION;
|
||||
|
||||
|
||||
#define DATETIME_FORMAT "This file is dated %s for %s\r"
|
||||
#define MAXDATETIME "60056/05/28 05:36:11"
|
||||
#define MINDATETIME "1601/01/01 00:00:00"
|
||||
#define Y2KDATETIME "2000/01/01 00:00:00"
|
||||
#define Y1KDATETIME "1999/12/31 23:59:59"
|
||||
#define MAXTIMESTAMP 0xFFFFFFFF
|
||||
#define MINTIMESTAMP 0x00000000
|
||||
#define TIMESTAMP_HI 0x01BF53EB
|
||||
#define Y2KTIMESTAMP_LO 0x256D4000
|
||||
#define Y1KTIMESTAMP_LO 0x24D4A980
|
||||
|
||||
typedef struct _WIN_OSVERSIONINFOA
|
||||
{
|
||||
DWORD dwOSVersionInfoSize;
|
||||
|
||||
Reference in New Issue
Block a user