В MSDN написано, что если в качестве второго параметра функции CreateFile указать 0 (а не GENERIC_READ, GENERIC_WRITE), то можно получить какие-то атрибуты устройства (НГМД), еще защищена ли дискета от записи, а еще можно без открытия файла узнать существует ли он. И больше не слова. Где должны возращаться эти атрибуты, чему должны быть равны другие параметры функции. CreateFile возвращает обычный описатель.
weiv Для устройств придется использовать DeviceIoControl, пример Calling DeviceIoControl. Признаком существования файла или каталога будет не равенство INVALID_HANDLE_VALUE != (hFile = CreateFile(...)).