Функция CallProcEx32W используется в 16-разрядном коде, чтобы вызвать функцию точки входа в динамически подключаемую библиотеку (DLL) Win32.
DWORD FAR CallProcEx32W( DWORD nParams, DWORD fAddressConvert, DWORD lpProcAddress, DWORD param1, ... ); |
[in] Число параметров, которое передается в функцию (от param1 до paramN). Для функций, которые не получают никаких параметров, этот параметр должен быть нуль. Вы можете также указать, в соответствии соглашением о вызовах, использование оператора OR (ИЛИ), чтобы объединить это значение с одним из ниже перечисленных значений.
Значение |
Предназначение |
---|---|
CPEX_DEST_STDCALL | Функция использует в соответствии с соглашением о вызовах - стандартный вызов. Это - значение по умолчанию. |
CPEX_DEST_CDECL | Функция использует соглашение о вызовах языка C. |
fAddressConvert
[in] Представление битовой маски, какие параметры должны быть обработаны как указатели 16:16, а какие преобразованы в плоскость линейных указателей перед передачей их в 32-разрядную процедуру. Самый младший бит в маске представляет первый параметр заданный как (param1), второй самый младший бит представляет второй от последнего параметра, заданный как (param2) и так далее, так, чтобы самый старший бит в маске представлял paramN.
lpProcAddress
[in] Значение, соответствующее вызываемой процедуре, которое возвращается функцией GetProcAddress32W.
param1
[in] Первый параметр для 32-разрядной процедуры, представленной параметром lpProcAddress.
...
[in] Дополнительные параметры для 32-разрядной процедуры, представленной lpProcAddress. Может быть от param2 до param32.
Возвращает значение из 32-разрядной процедуры, представленной lpProcAddress. Возвращаемое значение может также быть нулем при нижеследующих условиях:
Функция CallProcEx32W автоматически не устанавливает глобальные дескрипторы памяти, которые преобразуются в указатели 0:32. Поэтому, Вы должны сначала вызвать по дескриптору функцию GlobalFix или GlobalWire, а потом GlobalUnfix и GlobalUnwire.
Windows Me/98/95: Глобальное сжатие информации в любое время может переместить блоки памяти в ходе исполнения 32-разрядного кода текущего потока. Из-за этого, сегменты, перед вызовом целевой функции, работающей в Windows NT, не фиксируются, и могут послужить причиной приведения в состояние гонки в Windows Me/98/95.Обзор Унифицированные "переходники " между 16-ти и 32-разрядными модулями, 16-разрядные функции унифицированного "переходника", GetProcAddress32W
Размещение и совместимость CallProcEx32W | ||
К | Windows XP | Да |
л | Windows 2000 Professional | Да |
и | Windows NT Workstation | Да |
е | Windows Me | Да |
н | Windows 98 | Да |
т | Windows 95 | Да |
С | Windows 2003 Server | Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека | - | |
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в | Wownt16.h | |
- включено в | - | |
Unicode | ||
Замечания по платформе | Не имеется |