Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2013, 02:15   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Экспорт. функция с callback параметрами

Доброго времени суток уважаемые программисты, вообщем как бы так по проще объяснить. Есть некая нативная DLL которая экспортируют функцию ниже.

Код:
extern "C" KULONDLL_API int KulonStart(void (*DeviceStateCallback)(DEVICE_STATE* state),
							void (*DevicePhotoshotCallback)(PHOTO_SHOT* shot),
							void (*ServerStateCallback)(int state),
							void (*ResultCallback)(int DeviceID,int type,int result,int modBusAddr)=NULL);
Я ее на стороне .NET импортирую в свой проект следующим образом.

Код:
  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
  public delegate void DeviceStateCallback(IntPtr State);

  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
  public delegate void DevicePhotoshotCallback(IntPtr Shot);
 
  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
  public delegate void ServerStateCallback(int State);

  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
  public delegate void ResultCallback(int DeviceId, int Type, int Result, int ModBusAddr);
Код:
[DllImport("KulonDLL.dll", CallingConvention = CallingConvention.Cdecl)]
  public static extern int KulonStart(DeviceStateCallback DeviceState, DevicePhotoshotCallback DevicePhotoshot, ServerStateCallback ServerState, ResultCallback Result);
Вопрос собственно следующий, верно ли так объявлять параметр IntPtr как я сделал выше, например в DeviceStateCallback и соответственно в callback функции уже разбирать структуру?
Вообщем как правильно передать структуру.

Код:
struct DEVICE_STATE
{
        unsigned int rele_state_ext[8];
	SYSTEMTIME last_connect_time; 
	std::string state_script_list;	
};
coNsept вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пользовательская функция с необязательными параметрами s_bag Microsoft Office Excel 16 08.11.2013 19:58
JavaScript - функция с параметрами rustik24 JavaScript, Ajax 1 02.04.2012 22:07
Экспорт отчета в Excel с заданными параметрами timesoon Microsoft Office Access 1 14.06.2010 18:36
Пользовательская функция с необязательными параметрами savraska Microsoft Office Excel 2 23.05.2010 11:47
Функция с необязательными параметрами anGeee Общие вопросы Delphi 6 07.08.2009 10:46