Аналог GetFileType () для nativeApi

Тема в разделе "WASM.WIN32", создана пользователем coocky, 6 мар 2008.

  1. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Привет.Подскажите, каким образом можно узнать через функции nativeApi что файл является дисковым файлом?
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    NtQueryVolumeInformationFile, FileFsDeviceInformation.
     
  3. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    IceStudent спасибо..
    Еще раз извиняюсь,а по каким параметрам это можно определить из FileFsDeviceInformation струтктуры?
    У меня есть перечисление возвращаемых в доке типов,а что обозначают-нет.Спасибо.
     
  4. slow_at_work

    slow_at_work New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    64
    нэббет поможет
    G. Nebbet Windows Nt/2000 Native api reference
     
  5. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    slow_at_work
    да есть у меня! Там нет описания флагов! Есть перечисление!!
    Неужели так трудно сказать?
     
  6. slow_at_work

    slow_at_work New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    64
    честно думал что там есть. а так то, в мсдн есть
    http://msdn2.microsoft.com/en-us/library/cc205788.aspx
     
  7. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Честно сказать не особо просветило :) Это из МСДН
     
  8. slow_at_work

    slow_at_work New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    64
    typedef struct _FILE_FS_DEVICE_INFORMATION {
    DEVICE_TYPE DeviceType; /// здесь FILE_DEVICE_CD_ROM или FILE_DEVICE_DISK
    ULONG Characteristics; /// а здесь комбинация флагов
    } FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
     
  9. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    slow_at_work
    Фух..Еще раз..РЕБЯТА, просветите плиз не ПОЛЯМИ структуры,а тем,какие ЗНАЧЕНИЯ должны соотвествовать полям,укзаывая на то, что файл есть дисковый..
    Или еще проще
    Код (Text):
    1. if( ???? )
    2. {
    3. ЭТО ДИСКОВЫЙ ФАЙЛ!
    4. }
    что должно стоять вместо знаков вопроса?
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    coocky
    По названиям можно догадаться:
    Код (Text):
    1.     case FILE_DEVICE_CD_ROM:
    2.     case FILE_DEVICE_CD_ROM_FILE_SYSTEM:
    3.     case FILE_DEVICE_CONTROLLER:
    4.     case FILE_DEVICE_DATALINK:
    5.     case FILE_DEVICE_DFS:
    6.     case FILE_DEVICE_DISK:
    7.     case FILE_DEVICE_DISK_FILE_SYSTEM:
    8.     case FILE_DEVICE_VIRTUAL_DISK:
    9.         return( FILE_TYPE_DISK );
     
  11. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Вот запросил я C:\\test.txt
    Мне вернулось
    DeviceType=7
    Characteristics=32

    DeviceType понятно =FILE_DEVICE_DISK
    А Characteristics? Может FILE_DEVICE_IS_MOUNTED|FILE_REMOTE_DEVICE|FILE_READ_ONLY_DEVICE?
    А может FILE_DEVICE_IS_MOUNTED|FILE_WRITE_ONCE_MEDIA|FILE_FLOPPY_DISKETTE ?
    Мне непонятны названия,потому и спрашиваю
    что,к примеру такое-FILE_AUTOGENERATED_DEVICE_NAM или FILE_CHARACTERISTIC_WEBDAV_DEVICE??
    Вот почему и спрашиваю
    Уже 6 постов воду мусолим в ступе. Если не охота описать флаги,то подскажите комбинацию для того,что б выяснить,что файл является дисковым файлом.
     
  12. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    \\10.0.0.5\share\test.txt

    а вот такой вариант вернул мне
    DeviceType=7
    Characteristics=16
    FILE_REMOTE_DEVICE|FILE_FLOPPY_DISKETTE|FILE_READ_ONLY_DEVICE ??????????
    Не фига не пойму..Или мне нужно орентироваться только на поле DeviceType?
     
  13. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    32 = 0x20 = FILE_DEVICE_IS_MOUNTED
    16 = 0x10 = FILE_REMOTE_DEVICE
     
  14. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    ой.. Так это в 16 ричной форме...