Я хочу выяснить, является ли файл или каталог скрытым.
Сначала я использовал CFile :: GetStatus (), однако я обнаружил, что этот API иногда возвращает FALSE.1004 * Я не знаю почему, поэтому я написал следующий код, однако я обнаружил, что он нестабилен.Что не так с моим кодом?
BOOL IsHide(const CString& strPath, BOOL& bIsHide)
{
if (strPath.GetLength() <= 3)
{
bIsHide = FALSE;
return TRUE;
}
bIsHide = FALSE;
HANDLE hFile = CreateFile( strPath, 0, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
ASSERT(FALSE);
return FALSE;
}
BY_HANDLE_FILE_INFORMATION fiBuf;
GetFileInformationByHandle( hFile, &fiBuf );
CloseHandle(hFile);
WORD isHide = (fiBuf.dwFileAttributes) | FILE_ATTRIBUTE_HIDDEN;
if (isHide == fiBuf.dwFileAttributes)
{
bIsHide = TRUE;
}
else
{
bIsHide = FALSE;
}
return TRUE;
}