Проектирование параллельных алгоритмов в задачах идентификации. Вашкевич Н.П - 24 стр.

UptoLike

24
возвращает значение ERROR_NO_MORE_FILES. Вы должны использовать такую си-
туацию для завершения цикла просмотра содержимого каталога.
После завершения цикла просмотра необходимо закрыть идентификатор поиска, вы-
звав для этого функцию FindClose:
BOOL FindClose (HANDLE hFindFile);
В качестве единственного параметра этой функции передается идентификатор поис-
ка, полученный от функции FindFirstFile.
В дополнение кратко опишем функции API Microsoft Windows NT, предназначен-
ные для получения информации о дисковых устройствах и состоянии файловой системы.
Для того чтобы определить список установленных в системе логических дисковых уст-
ройств, вы можете вызвать функцию GetLogicalDrives:
DWORD GetLogicalDrives(VOID);
Эта функция не имеет параметров и возвращает 32-разрядное значение, каждый бит
которого отвечает за свое логическое устройство. Самый младший, нулевой бит соответ-
ствует устройству с идентификатором А: бит с номером 1 - устройству с идентификато-
ром B: и так далее. Если бит установлен, устройство присутствует в системе, если нет -
отсутствует. Более развернутую информацию
о составе логических дисковых устройств в
системе можно получить при помощи функции
GetLogicalDriveStrings:
DWORD GetLogicalDriveStrings(
DWORD nBufferLength, // размер буфера
LPTSTR lpBuffer); // адрес буфера для записи сведений об устройствах
Если вызвать эту функцию с параметрами nBufferLength и lpBuffer, равными соот-
ветственно 0 и NULL, она вернет размер буфера, необходимый для записи информации о
всех логических дисковых устройствах, присутствующих в системе. После этого вы мо-
жете вызвать функцию GetLogicalDriveStrings еще раз, заказав предварительно буфер
нужного размера и указав функции правильный размер буфера. GetLogicalDriveStrings
заполнит буфер текстовыми строками вида:
A:\
B:\
С:\
Каждая такая строка закрыта двоичным нулем. Последняя строка будет закрыта
двумя двоичными нулями.
Определение типа дискового устройства можно выполнить с помощью функции
GetDriveType:
UINTGetDriveType(LPCTSTRlpRootPathName);
В качестве параметра функции GetDriveType нужно передать текстовую строку
имени устройства, например полученную при помощи функции GetLogicalDriveStrings.
В зависимости от типа указанного устройства функция
GetDriveType может вернуть од-
но из следующих значений, которые описаны в приведенной ниже таблице:
{PRIVATE}Значение Описание
0 Тип устройства не удалось определить
1 Указанный корневой каталог не существует
DRIVE_REMOVABLE Устройство со сменным носителем данных
DRIVE_FIXED Устройство с несменным носителем данных
возвращает значение ERROR_NO_MORE_FILES. Вы должны использовать такую си-
туацию для завершения цикла просмотра содержимого каталога.
      После завершения цикла просмотра необходимо закрыть идентификатор поиска, вы-
звав для этого функцию FindClose:
      BOOL FindClose (HANDLE hFindFile);
      В качестве единственного параметра этой функции передается идентификатор поис-
ка, полученный от функции FindFirstFile.
      В дополнение кратко опишем функции API Microsoft Windows NT, предназначен-
ные для получения информации о дисковых устройствах и состоянии файловой системы.
Для того чтобы определить список установленных в системе логических дисковых уст-
ройств, вы можете вызвать функцию GetLogicalDrives:
      DWORD GetLogicalDrives(VOID);
      Эта функция не имеет параметров и возвращает 32-разрядное значение, каждый бит
которого отвечает за свое логическое устройство. Самый младший, нулевой бит соответ-
ствует устройству с идентификатором А: бит с номером 1 - устройству с идентификато-
ром B: и так далее. Если бит установлен, устройство присутствует в системе, если нет -
отсутствует. Более развернутую информацию о составе логических дисковых устройств в
системе можно получить при помощи функции GetLogicalDriveStrings:
      DWORD GetLogicalDriveStrings(
      DWORD nBufferLength, // размер буфера
      LPTSTR lpBuffer); // адрес буфера для записи сведений об устройствах
      Если вызвать эту функцию с параметрами nBufferLength и lpBuffer, равными соот-
ветственно 0 и NULL, она вернет размер буфера, необходимый для записи информации о
всех логических дисковых устройствах, присутствующих в системе. После этого вы мо-
жете вызвать функцию GetLogicalDriveStrings еще раз, заказав предварительно буфер
нужного размера и указав функции правильный размер буфера. GetLogicalDriveStrings
заполнит буфер текстовыми строками вида:
      A:\
      B:\
      С:\
      Каждая такая строка закрыта двоичным нулем. Последняя строка будет закрыта
двумя двоичными нулями.
      Определение типа дискового устройства можно выполнить с помощью функции
GetDriveType:
      UINTGetDriveType(LPCTSTRlpRootPathName);
      В качестве параметра функции GetDriveType нужно передать текстовую строку
имени устройства, например полученную при помощи функции GetLogicalDriveStrings.
В зависимости от типа указанного устройства функция GetDriveType может вернуть од-
но из следующих значений, которые описаны в приведенной ниже таблице:


     {PRIVATE}Значение                          Описание
             0                 Тип устройства не удалось определить
             1                 Указанный корневой каталог не существует
       DRIVE_REMOVABLE         Устройство со сменным носителем данных
       DRIVE_FIXED             Устройство с несменным носителем данных



                                         24