mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 17:35:07 +00:00
[KERNEL32]
Fixed implementation of both GetFileTime/SetFileTime svn path=/trunk/; revision=50983
This commit is contained in:
parent
fd989b27e9
commit
a815fa86d2
|
@ -1421,18 +1421,18 @@ GetTempFileNameW(IN LPCWSTR lpPathName,
|
|||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
GetFileTime(HANDLE hFile,
|
||||
LPFILETIME lpCreationTime,
|
||||
LPFILETIME lpLastAccessTime,
|
||||
LPFILETIME lpLastWriteTime)
|
||||
GetFileTime(IN HANDLE hFile,
|
||||
OUT LPFILETIME lpCreationTime OPTIONAL,
|
||||
OUT LPFILETIME lpLastAccessTime OPTIONAL,
|
||||
OUT LPFILETIME lpLastWriteTime OPTIONAL)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
FILE_BASIC_INFORMATION FileBasic;
|
||||
NTSTATUS Status;
|
||||
|
||||
if(IsConsoleHandle(hFile))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
BaseSetLastNTError(STATUS_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -1443,16 +1443,27 @@ GetFileTime(HANDLE hFile,
|
|||
FileBasicInformation);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastErrorByStatus(Status);
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (lpCreationTime)
|
||||
memcpy(lpCreationTime, &FileBasic.CreationTime, sizeof(FILETIME));
|
||||
{
|
||||
lpCreationTime->dwLowDateTime = FileBasic.CreationTime.LowPart;
|
||||
lpCreationTime->dwHighDateTime = FileBasic.CreationTime.HighPart;
|
||||
}
|
||||
|
||||
if (lpLastAccessTime)
|
||||
memcpy(lpLastAccessTime, &FileBasic.LastAccessTime, sizeof(FILETIME));
|
||||
{
|
||||
lpLastAccessTime->dwLowDateTime = FileBasic.LastAccessTime.LowPart;
|
||||
lpLastAccessTime->dwHighDateTime = FileBasic.LastAccessTime.HighPart;
|
||||
}
|
||||
|
||||
if (lpLastWriteTime)
|
||||
memcpy(lpLastWriteTime, &FileBasic.LastWriteTime, sizeof(FILETIME));
|
||||
{
|
||||
lpLastWriteTime->dwLowDateTime = FileBasic.LastWriteTime.LowPart;
|
||||
lpLastWriteTime->dwHighDateTime = FileBasic.LastWriteTime.HighPart;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1462,40 +1473,40 @@ GetFileTime(HANDLE hFile,
|
|||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
SetFileTime(HANDLE hFile,
|
||||
CONST FILETIME *lpCreationTime,
|
||||
CONST FILETIME *lpLastAccessTime,
|
||||
CONST FILETIME *lpLastWriteTime)
|
||||
SetFileTime(IN HANDLE hFile,
|
||||
CONST FILETIME *lpCreationTime OPTIONAL,
|
||||
CONST FILETIME *lpLastAccessTime OPTIONAL,
|
||||
CONST FILETIME *lpLastWriteTime OPTIONAL)
|
||||
{
|
||||
FILE_BASIC_INFORMATION FileBasic;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
NTSTATUS Status;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
FILE_BASIC_INFORMATION FileBasic;
|
||||
|
||||
if(IsConsoleHandle(hFile))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
BaseSetLastNTError(STATUS_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Status = NtQueryInformationFile(hFile,
|
||||
&IoStatusBlock,
|
||||
&FileBasic,
|
||||
sizeof(FILE_BASIC_INFORMATION),
|
||||
FileBasicInformation);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastErrorByStatus(Status);
|
||||
return FALSE;
|
||||
}
|
||||
memset(&FileBasic, 0, sizeof(FILE_BASIC_INFORMATION));
|
||||
|
||||
if (lpCreationTime)
|
||||
memcpy(&FileBasic.CreationTime, lpCreationTime, sizeof(FILETIME));
|
||||
if (lpLastAccessTime)
|
||||
memcpy(&FileBasic.LastAccessTime, lpLastAccessTime, sizeof(FILETIME));
|
||||
if (lpLastWriteTime)
|
||||
memcpy(&FileBasic.LastWriteTime, lpLastWriteTime, sizeof(FILETIME));
|
||||
{
|
||||
FileBasic.CreationTime.LowPart = lpCreationTime->dwLowDateTime;
|
||||
FileBasic.CreationTime.HighPart = lpCreationTime->dwHighDateTime;
|
||||
}
|
||||
|
||||
// should i initialize changetime ???
|
||||
if (lpLastAccessTime)
|
||||
{
|
||||
FileBasic.LastAccessTime.LowPart = lpLastAccessTime->dwLowDateTime;
|
||||
FileBasic.LastAccessTime.HighPart = lpLastAccessTime->dwHighDateTime;
|
||||
}
|
||||
|
||||
if (lpLastWriteTime)
|
||||
{
|
||||
FileBasic.LastWriteTime.LowPart = lpLastWriteTime->dwLowDateTime;
|
||||
FileBasic.LastWriteTime.HighPart = lpLastWriteTime->dwHighDateTime;
|
||||
}
|
||||
|
||||
Status = NtSetInformationFile(hFile,
|
||||
&IoStatusBlock,
|
||||
|
@ -1504,7 +1515,7 @@ SetFileTime(HANDLE hFile,
|
|||
FileBasicInformation);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastErrorByStatus(Status);
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue