2010-06-23 11 views
0

Je souhaite savoir si un fichier ou un répertoire est masqué.Comment vérifier si un dossier ou un fichier est masqué =

Au début, j'ai utilisé CFile :: GetStatus(), mais j'ai trouvé que cette API retourne parfois FALSE. Je ne sais pas pourquoi, donc j'ai écrit le code suivant, Cependant j'ai trouvé que ce n'est pas stable. Quel est le problème avec mon code?

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; 
} 

Répondre