Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы


Листинг 5.12. Файл wast\wastdrv.cpp - часть 3


asm mov ax, 0x1684 asm mov bx, vxd_id asm xor di, di asm mov es, di asm int 0x2f asm mov ax, di asm mov dx, es

asm pop es

asm mov axreg, ax asm mov dxreg, dx

asm pop di asm pop bx asm pop ax

return((VXDAPI)MAKELP(dxreg, axreg)); }

// ======================================================== // DriverProc // Функция загружаемого драйвера // ======================================================== extern "C" LRESULT CALLBACK _export DriverProc( DWORD dwDiverId, // идентификатор драйвера HDRVR hDriver, // идентификатор, который // используется для обращения к драйверу UINT msg, // код сообщения LPARAM lParam1, // первый параметр сообщения LPARAM lParam2) // второй параметр сообщения { switch(msg) { // Регистрация окна приложения wast.exe case UDRV_REGISTERTASK: { // Если виртуальный драйвер не загружен, // возвращаем признак ошибки FALSE if(vxdApi == NULL) { dwRc = (DWORD)FALSE; break; }

// Выполняется только в том случае, если // разрешен запуск приложений Windows из // командной строки MS-DOS if(GetPrivateProfileInt(szDriverName, "Enable", 0, "system.ini")) { dwRc = (DWORD)RegisterTask((HTASK)lParam1); } break; }

// Отмена регистрации приложения wast.exe case UDRV_UNREGISTERTASK: { if(fTaskRegistered) UnregisterTask(vxdApi); break; }

// Загрузка драйвера. Это первое сообщение, которое // получает драйвер case DRV_LOAD: { dwRc = 1l; break; }

// Это сообщение посылается драйверу перед тем, // как драйвер будет выгружен из памяти case DRV_FREE: { dwRc = 1l; break; }

// Открытие драйвера case DRV_OPEN: { dwRc = 1l; break; }

// Закрытие драйвера case DRV_CLOSE: { dwRc = 1l; break; }

// Разблокирование драйвера case DRV_ENABLE: { dwRc = 1l; break; }

// Блокирование драйвера case DRV_DISABLE: { dwRc = 1l; break; }

// Это сообщение посылается при установке драйвера case DRV_INSTALL: { // Создаем раздел [wastdrv] в файле system.ini // В этом разделе создаем строку: "Enable=1" WritePrivateProfileString(szDriverName, "Enable", "1", "system.ini");




Начало  Назад  Вперед



Книжный магазин