Я не хочу умнечать !! но помоему в Wine И WineX есть BUG с Win APT GetDriveType. Ну давайте всё по порядку. Когдато давным давно я отлучал от диска игру GTAVC и это у меня получилось. А вот когда её запускал под Linux она мне написала что хочет диск ?? Я начел разбераться и для этого под windows написал вот эту программу. //---------------------------------------------------------------------------
#include <windows.h> #pragma hdrstop void test (char*); //---------------------------------------------------------------------------
#pragma argsused WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { char testpath[100]; char d = 'a'; do { strcpy(testpath,"0:\\"); testpath[0]=d; test(testpath); d++; } while(d <= 'z'); //Test Error strcpy(testpath,"c:\\temp"); test(testpath); return 0; } //--------------------------------------------------------------------------- void test (char* path) { char buff[100]; int rezult = GetDriveType(path); switch (rezult) { case DRIVE_UNKNOWN : { strcpy(buff,"DRIVE_UNKNOWN"); break; } case DRIVE_NO_ROOT_DIR : { strcpy(buff,"DRIVE_NO_ROOT_DIR"); break; } case DRIVE_REMOVABLE : { strcpy(buff,"DRIVE_REMOVABLE"); break; } case DRIVE_FIXED : { strcpy(buff,"DRIVE_FIXED"); break; } case DRIVE_REMOTE : { strcpy(buff,"DRIVE_REMOTE"); break; } case DRIVE_CDROM : { strcpy(buff,"DRIVE_CDROM"); break; } case DRIVE_RAMDISK : { strcpy(buff,"DRIVE_RAMDISK"); break; } default : { int d,s; char* t; t = _ecvt((double)rezult,10,&d,&s); strcpy(buff,t); } } WritePrivateProfileString("systemdrives",path,buff,"c:\\sd.txt&qu ot;); }
Суть этой программы токова:поочерёдно запрашиваеться тип носителя A:,B:,и т.д. результат протоколируется а файл c:\\sd.txt,а в конце задаёться провакационный путь c:\temp. программа запускалась под win98,win2k и из под WineX вот результаты её работы:
win98 win2k WineX [systemdrives] [systemdrives] [systemdrives] a:\=DRIVE_REMOVABLE a:\=DRIVE_REMOVABLE a:\=DRIVE_REMOVABLE b:\=DRIVE_NO_ROOT_DIR b:\=DRIVE_NO_ROOT_DIR b:\=DRIVE_NO_ROOT_DIR c:\=DRIVE_FIXED c:\=DRIVE_FIXED c:\=DRIVE_FIXED d:\=DRIVE_CDROM d:\=DRIVE_CDROM d:\=DRIVE_CDROM e:\=DRIVE_CDROM e:\=DRIVE_CDROM e:\=DRIVE_CDROM f:\=DRIVE_NO_ROOT_DIR f:\=DRIVE_NO_ROOT_DIR f:\=DRIVE_NO_ROOT_DIR .... y:\=DRIVE_NO_ROOT_DIR y:\=DRIVE_NO_ROOT_DIR y:\=DRIVE_NO_ROOT_DIR z:\=DRIVE_NO_ROOT_DIR z:\=DRIVE_NO_ROOT_DIR z:\=DRIVE_NO_ROOT_DIR
c:\temp=DRIVE_NO_ROOT_DIR c:\temp=DRIVE_NO_ROOT_DIR c:\temp=DRIVE_FIXED {rem диски под WineX сэмулированы всем извесным способом} всё вроде одинаково кроме проверки на вшивость в последней строке !!!! на сколько я понимаю Эмулятор также должен отрабатывать и ошибочные данные как и оригенал. P.S. Ну вот здксь таблица не получилась