Программирование для Windows NT (том 2)


Функция GetDiskInfo - часть 2


  nNumDirves++)

{

  lpTemp = strchr(lpTemp, 0) + 1;

}

Определив таким образом общее количество логических дисков, приложение заказывает память для массива структур типа DISKINFO, в котором будут хранится параметры логических дисков:

pdi = malloc(nNumDirves * sizeof(DISKINFO));

Заполнение массива структур DISKINFO выполняется в цикле.

Для каждого диска прежде всего выполняется копирование имени диска из соответствующей строки списка, полученного ранее при помощи функции GetLogicalDriveStrings.

Далее приложение определяет тип диска, вызывая для этого функцию GetDriveType (в локальной переменной lpTemp хранится имя диска):

(pdi + i)->nDriveType = GetDriveType(lpTemp);

Заполнение полей структуры DISKINFO выполняется по-разному в зависимости от типа диска.

Если устройство со сменным носителем данных, то в поле iImage, предназначенное для хранения номера пиктограммы диска, записывается нулевое значение. Именно под этим номером мы занесли пиктограмму диска со сменным носителем в список пиктограмм для органа управления List View.

В поле szVolumeName мы записываем строку <Unknown>, так как определение фактических параметров устройств со сменным носителем выполняется при обработке извещения NM_DBLCLK. Аналогичным образом заполняются и остальные поля структуры.

Заполнение структуры DISKINFO для устройств чтения CD-ROM выполняется точно так же, как и устройств со сменным носителем данных, за исключением того что в поле номера пиктограммы iImage записывается значение 2. Это номер пиктограммы с изображением накопителя CD-ROM в списке пиктограмм органа управления List View.

Если текущим устройством, для которого мы определяем параметры, является диск с несменным носителем данных, функция GetDiskInfo получает большинство этих параметров при помощи функции GetVolumeInformation, как это показано ниже:

GetVolumeInformation(lpTemp, (pdi + i)->szVolumeName, 30,

  &((pdi + i)->dwVolumeSerialNumber),

  &((pdi + i)->dwMaxFileNameLength),

  &((pdi + i)->dwFileSystemFlags),




- Начало -  - Назад -  - Вперед -