Функцию WOWCallback16Ex используйте в 32-разрядном коде, вызываемом из 16-разрядного кода (через унифицированные "переходники"), чтобы вызвать обратно 16-разрядную сторону (унифицированный обратный вызов).
BOOL WINAPI WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags, DWORD cbArgs, PVOID pArgs, PDWORD pdwRetCode ); |
vpfn16
[in] Указатель 16:16 на 16-разрядную процедуру обратного вызова, которую передают с 16-разрядной стороны.
dwFlags
[in] Указывает соглашение о вызовах. Этот параметр может быть одним из ниже перечисленных значений.
Значение |
Предназначение |
---|---|
WCB16_CDECL | Вызывает _cdecl процедуру обратного вызова. |
WCB16_PASCAL | Вызывает _pascal процедуру обратного вызова (значение по умолчанию). |
cbArgs
[in] Количество байтов в параметрах (используется, чтобы правильно очистить 16-разрядный стек).
pArgs
[in] Параметры для процедуры обратного вызова.
pdwRetCode
[out] Получает код возврата от процедуры обратного вызова.
Если параметр cbArgs является больше, чем WCB16_MAX_ARGS байтов, которое поддерживает система, возвращаемое значение - ЛОЖЬ (FALSE), а функция GetLastError возвращает значение ERROR_INVALID_PARAMETER. В противном случае, возвращаемое значение - ИСТИНА (TRUE) и двойное слово (DWORD), которое указывает при помощи параметра pdwRetCode содержимое кода возврата из процедуры обратного вызова. Если процедура обратного вызова возвращает значение типа слова (WORD) вместо двойного слова (DWORD), старшие 16 битов кода возврата не определяются и должны игнорироваться при помощи использования макроса LOWORD на возвращаемом значении.
Функция WOWCallback16Ex позволяет любую комбинацию параметров до общего количества байтов WCB16_MAX_CBARGS, которые передаются в 16-разрядную процедуру обратного вызова. Независимо от значения параметра cbArgs, WCB16_MAX_CBARGS байтов будут всегда копироваться из pArgs в 16-разрядный стек. Если pArgs меньше, чем WCB16_MAX_CBARGS байтов от конца страницы и недоступны на следующей странице, то WOWCallback16Ex подвергнется процедуре нарушения доступа.
Параметры указываются при помощи pArgs, должны быть в правильном порядке в соответствии с соглашением о вызовах процедуры обратного вызова. Например, чтобы вызвать процедуру в соответствии с языком Pascal, поместите параметры в массив pArgs в обратном порядке сначала с наименьшим значимым словом для типов двойного слова (DWORD) и начальным смещением FAR для указателей.
Когда Вы вызываете _cdecl процедуру, то поместите параметры в массив pArgs, по порядку перечисленному в прототипе функции сначала с наименьшим значимым словом для типов двойного слова (DWORD) и начальным смещением FAR для указателей.
Обзор Унифицированные "переходники" между 16-ти и 32-разрядными модулями, 32-разрядные функции унифицированного "переходника", LOWORD
Размещение и совместимость WOWCallback16Ex | ||
К | Windows XP | Да |
л | Windows 2000 Professional | Да |
и | Windows NT Workstation | Да |
е | Windows Me | Да |
н | Windows 98 | Да |
т | Windows 95 | Да |
С | Windows 2003 Server | Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека | Wow32.lib | |
Используемая DLL | Wow32.dll | |
Заголовочный файл | ||
- объявлено в | Wownt32.h | |
- включено в | - | |
Unicode | ||
Замечания по платформе | Не имеется |