Как проверить, что файл заблокирован в MFC? - PullRequest
0 голосов
/ 10 апреля 2019

Я использую MFC CFile.

В операционной системе Windows в моем приложении я блокирую файл, открывая файл с отказом в доступе к общим ресурсам.

В том же приложении или процессе я долженпроверить, заблокирован файл или нет?

Прямо сейчас, единственный известный мне способ - открыть файл и проверить GetLastError ().

Есть ли другое решение?

1 Ответ

0 голосов
/ 10 апреля 2019

Попробуйте сначала открыть файл. Если файл существует и уже открыт без общего доступа, вы получаете нарушение совместного доступа CFileException::sharingViolation.

См. CFileException для возможных значений CFileException::m_cause

Пример:

UINT open_flag = CFile::modeReadWrite | CFile::modeCreate | CFile::modeNoTruncate;
CFileException ex;
if(file.Open(filename, open_flag, &ex))
{
    //success
}
else 
{
    if(ex.m_cause == CFileException::fileNotFound)
    {
        //file doesn't exit
    }
    else if(ex.m_cause == CFileException::sharingViolation)
    {
        //file exists and is locked
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...