RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Проверить имя файловой системы?


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : всем_советчик
To : Andrew Kouznetsov
Subj : Проверить имя файловой системы?

Следующий код выдран из Nice/2 расширителя, модуль Files.c:
Зачем он там нужен - Х его З. Вероятно, для чего-то нужен...

// --- Проверяет доступность диска ---

#ifndef DRIVE_IS_AVAILABLE_IS_REPLACED
// Drive_name - имя диска.
BYTE DriveIsAvailable( PCHAR Drive_name )
{
// Узнаем вид и название файловой системы.
ULONG Type = 0; CHAR FileSystem_name[ 25 ] = "";

CHAR Drive[ 3 ] = { Drive_name[ 0 ], Drive_name[ 1 ], 0 };
PFSQBUFFER2 Data = NULL; ULONG Data_length = 1024;

DosAllocSharedMem( (PPVOID) &Data, NULL, Data_length, PAG_ALLOCATE | OBJ_GIVEABLE );
bzero( Data, Data_length );

DosQueryFSAttach( Drive, 0, FSAIL_QUERYNAME, Data, &Data_length );
Type = Data->iType; strncpy( FileSystem_name, (PCHAR) &Data->szName + Data->cbName + 1, 24 );

DosFreeMem( Data ); Data = NULL;

// Если имя узнать не удалось - диск недоступен.
if( FileSystem_name[ 0 ] == 0 ) return 0;

// Сетевые диски нам не нужны.
if( Type != FSAT_LOCALDRV ) return 0;

// Непригодные для поиска - тоже.
if( strfind( "CDFS", FileSystem_name ) ) return 0;
if( strfind( "FAT", FileSystem_name ) ) return 0;
if( strfind( "NTFS", FileSystem_name ) ) return 0;
if( strfind( "RAM", FileSystem_name ) ) return 0;
if( strfind( "NET", FileSystem_name ) ) return 0;

{
CHAR Label[ SIZE_OF_NAME ] = ""; QueryDriveLabel( Drive_name, Label );
if( DriveLabelHasSpecialChars( Label ) ) return 0;
}

// Возврат.
return 1;
}
#endif


Thu 06 Feb 2003 16:03 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.1) Gecko/2002082




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.