Q: Which WinAPI function can be used to open a folder?
A: To open a folder we can use CreateFile like for any file, but additionally we have to set FILE_FLAG_BACKUP_SEMANTICS flag.
Here is an example that opens a folder then gets its creation date:
Code:
DWORD GetDirectoryCreationTime(LPCTSTR pszDir, FILETIME& ft)
{
DWORD dwRet = NO_ERROR;
HANDLE hFile = ::CreateFile(pszDir,
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, // required if open a directory
NULL);
if(INVALID_HANDLE_VALUE == hFile)
{
dwRet = ::GetLastError();
}
else
{
if(!::GetFileTime(hFile, &ft, NULL, NULL))
{
dwRet = ::GetLastError();
}
::CloseHandle(hFile);
}
return dwRet;
}