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

         

Заполняем полученный блок памяти именами


  lpLogicalDriveStrings = malloc(dwDriveStringsSpace);

 

  // Заполняем полученный блок памяти именами дисков

  GetLogicalDriveStrings(dwDriveStringsSpace,

    lpLogicalDriveStrings);

  // Подсчитываем количество дисков, сканируя список

  // имен, полученный на предыдущем шаге

  nNumDirves = 0;

  for(lpTemp = lpLogicalDriveStrings;

    *lpTemp != 0; nNumDirves++)

  {

    lpTemp = strchr(lpTemp, 0) + 1;

  }

  // Заказываем память для хранения информации

  // о всех дисках

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

  // Заполняем массив структур DISKINFO информацией о дисках

  for(i = 0, lpTemp = lpLogicalDriveStrings;

  i < nNumDirves; i ++)

  {

    // Получаем имя очередного диска

    strcpy((pdi + i)->szDriveName, lpTemp);

   

    // Определяем тип диска

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

   

    // В зависимости от типа диска выбираем способ

    // заполнения соответствующей структуры DISKINFO

    switch ((pdi + i)->nDriveType)

    {

      // Для сменных устройств и для CD-ROM

      // записываем пустые значения

      case DRIVE_REMOVABLE:

      {

          // Выбираем пиктограмму с номером 0

          (pdi + i)->iImage               = 0;

         

          strcpy((pdi + i)->szVolumeName, "<Unknown>");

          (pdi + i)->dwVolumeSerialNumber = 0;

          (pdi + i)->dwMaxFileNameLength  = 0;

          (pdi + i)->dwFileSystemFlags    = 0;

          strcpy((pdi + i)->szFileSystemName, "?");

          (pdi + i)->dwFreeSpace          = 0;

          (pdi + i)->dwTotalSpace         = 0;

        break;

      }

      case DRIVE_CDROM:

      {

          (pdi + i)->iImage               = 2;

          strcpy((pdi + i)->szVolumeName, "<Unknown>");

          (pdi + i)->dwVolumeSerialNumber = 0;

          (pdi + i)->dwMaxFileNameLength  = 0;

          (pdi + i)->dwFileSystemFlags    = 0;


Содержание  Назад  Вперед