Przeglądaj źródła

Implemented OSBasics::fileTime on windows

cib 12 lat temu
rodzic
commit
f837b5f2bb
1 zmienionych plików z 19 dodań i 0 usunięć
  1. 19 0
      Core/Contents/Source/OSBasics.cpp

+ 19 - 0
Core/Contents/Source/OSBasics.cpp

@@ -366,7 +366,26 @@ time_t OSBasics::getFileTime(const Polycode::String& pathString) {
 	}
 
 #ifdef _WINDOWS
+	WCHAR tmp[4096];
+	memset(tmp, 0, sizeof(WCHAR)*4096);
+	ctow(tmp, pathString.c_str());
+	HANDLE hFile = CreateFile(tmp, GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE,
+								NULL, OPEN_EXISTING, 0, NULL);
+								
+	if(hFile == INVALID_HANDLE_VALUE) {
+		return 0;
+	}
 
+	FILETIME lastModifyTime;
+	BOOL result = GetFileTime(hFile, NULL, NULL, &lastModifyTime);
+	if(!result) {
+		return 0;
+	} else {
+		ULARGE_INTEGER ull;
+		ull.LowPart = lastModifyTime.dwLowDateTime;
+		ull.HighPart = lastModifyTime.dwHighDateTime;
+		return ull.QuadPart / 10000000ULL - 11644473600ULL;
+	}
 #else
 	struct stat statbuf;
 	int retVal = stat(realString.c_str(), &statbuf);