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


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


// ====================================================== // Загружаемый драйвер wastdrv.dll // Версия 1.0 // Используется совместно с приложением wast.exe // и VxD-драйвером VXDSRV.386 версии 1.1 // ------------------------------------------------------ // Copyright (C) 1995 Alexandr Frolov // ====================================================== #define STRICT #include <windows.h> #include <mem.h> #include <string.h> #include "wastdrv.hpp" #include "wastvxd.hpp"

extern "C" LRESULT CALLBACK _export DriverProc(DWORD dwDiverId, HDRVR hDriver, UINT msg, LPARAM lParam1, LPARAM lParam2);

extern "C" void FAR PASCAL _export WinAppStart(WORD wVxDVersion);

BOOL RegisterTask(HTASK hTask); void UnregisterTask(VXDAPI vxdEntry);

int CALLBACK _export DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);

void AutoStartWAST(BOOL);

DWORD dwRc = 0L;

// Точка входа API VxD-драйвера VXDAPI vxdApi = NULL;

// Идентификатор задачи приложения wast.exe HTASK hTaskWAST = NULL;

// Буфер для передачи информации о запукаемой // программе BYTE szCallbackBuf[350];

// Очередь запросов на запуск программ из VM MS-DOS BYTE szCmd[6][350];

// Номер строки параметров в массиве szCmd int nCmdLine = 0;

// Флаг регистрации приложения wast.exe BOOL fTaskRegistered = FALSE;

HINSTANCE hMod; char szDriverName[] = "wastdrv"; char szTemp[80];

// ======================================================== // Функция LibMain // ======================================================== #pragma argsused int FAR PASCAL LibMain(HINSTANCE hModule, WORD wDataSegment, WORD wHeapSize, LPSTR lpszCmdLine) { hMod = hModule;

// Получаем точку входа API VxD-драйвера vxdApi = vxdGetDeviceAPI(VXD_ID); return TRUE; }

// ======================================================== // Функция WEP // ======================================================== #pragma argsused int FAR PASCAL WEP(int bSystemExit) { // Если выгружается из памяти DLL-библиотека, // содержащая загружаемый драйвер, // выполняем отключение VxD-драйвера if(vxdApi != NULL) { if(fTaskRegistered) UnregisterTask(vxdApi); } return 1; }




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



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