Загрузка DLL, базирующейся на Win32


Вы загружаете  DLL32, базирующуюся на Win32, из APP16 при помощи использования функции LoadLibraryEx32W.

// Загружаем  DLL базирующуюся на Win32 из 16-разрядного кода.
if( NULL == (ghLib = LoadLibraryEx32W( "dll32.dll", NULL, 0 )) ) 
{
    MessageBox( NULL, "Cannot load DLL32", "App16", MB_OK );
    return 0;
}

 

Если Вы изолируете ваш код переключения вызова с 16- битового на 32-битовый модуль и обратно в DLL16, то Вы можете поместить вызов функции LoadLibraryEx32W в функцию LibMain кода DLL16.

Дескриптор экземпляра сохраняется в нижеследующей глобальной переменной:

DWORD ghLib;

Связывая 16-разрядный код, Вы должны обозначить, что унифицированные функции переключения вызова с 16- на 32-битовый модуль и обратно должны быть импортированы из системного ядра. Например, используя Microsoft Visual C++, Вы должны создать раздел IMPORTS в файле модуля определения (.DEF) для APP16, следующим образом.

IMPORTS
    kernel.LoadLibraryEx32W
    kernel.FreeLibrary32W
    kernel.GetProcAddress32W
    kernel.GetVDMPointer32W
    kernel.CallProcEx32W

Назад в оглавление
На главную страницу темы
Перевод 24.10.2007 16:21 ©Copyright V. Sokovikov
Hosted by uCoz