|
![]() |
#1 |
Участник
|
В 3.0 нет никаких IntPtr; дескриптор, вероятнее всего, имеет тип не void, а void*. В данном случае при вызове функции cipherlabtcpCreate() нужно передать указатель на область памяти размером в 4 байта, куда функция запишет дескриптор - некое значение, имеющее смысл для других API-функций CipherLabTCP. Затем полученный дескриптор надо будет, вероятнее всего, по значению (а не по ссылке) передавать в прочие API-функции CipherLabTCP.
Пример того, как правильно через DLLFunction описать API-функцию, принимающую указатель в качестве параметра, и как потом получить записанное функцией значение, можно найти в WinAPI::getComputerName(). Что именно не получается с этим примером? PS. Описывать через DLLFunction, будто бы функция cipherlabtcpCreate() вообще не принимает на вход параметров (ExtTypes::void), в корне неверно. Тип void* означает "нетипизированный указатель" и с ExtTypes::void он не имеет ничего общего; указатель в терминах DLLFunction - это ExtTypes::Pointer. Последний раз редактировалось gl00mie; 04.03.2014 в 11:59. Причина: PS |
|
![]() |
#2 |
Участник
|
с void* всё верно. Описание функции нашёл
Название: int cipherlabtcpCreate(void** ptrtohandle) Входные параметры: - ptrtohandle (OUT) - указатель на дескриптор сервера-компоненты (дескриптор имеет тип void*), который используется в последующих вызовах, может быть равен NULL. Значение дескриптора должно быть инициализировано NULL. Выходные параметры: код ошибки Описание: Инициализация компоненты-объекта сервера .Создается объект-сервера. Если ptrtohandle равен NULL, подразумевается использование одной "глобальной" компоненты-сервера.
__________________
Axapta 3.0 SP6 Build 1951 |
|
![]() |
#3 |
Участник
|
gl00mie
Как я понимаю если указатель на дескриптор, то нужно пользоваться ExtTypes::Pointer, а если входной параметр Int, то тут нужно задавать как ExtTypes: ![]()
__________________
Axapta 3.0 SP6 Build 1951 |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|