Тип передаваемой переменно в функции WriteFile из kernel32

 

Добрый вечер всем!

  Есть 2 работающих примера:

#import "kernel32.dll"
  BOOL WINAPI WriteFile(HANDLE hFile, int &lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD &lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);
#import

int data=100;

WriteFile(hFile,data,sizeof(data),byteWrt,NULL);

 и

struct STRUCT_DATA
  {
   int i;
   double d;
   bool b;
   datetime dt;
  };

#import "kernel32.dll"
  BOOL WINAPI WriteFile(HANDLE hFile, STRUCT_DATA &lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD &lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);
#import

STRUCT_DATA data=100;

WriteFile(hFile,data,sizeof(data),byteWrt,NULL);

 оба примера по отдельности работают.

Подскажите, пжл, какой тип переменно lpBuffer указать у импортируемой функции, чтобы можно было передать переменную любого типа?

Спасибо! 

Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
  • www.mql5.com
Основы языка / Препроцессор / Импорт функций (#import) - Документация по MQL5
 
meneo:

Добрый вечер всем!

  Есть 2 работающих примера:

 и

 оба примера по отдельности работают.

Подскажите, пжл, какой тип переменно lpBuffer указать у импортируемой функции, чтобы можно было передать переменную любого типа?

Спасибо! 

#import "kernel32.dll"
  BOOL WINAPI WriteFile(HANDLE hFile, STRUCT_BASE &lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD &lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);
#import


struct STRUCT_BASE
  {
  };

struct STRUCT_DATA : public STRUCT_BASE
  {
   int i;
   double d;
   bool b;
   datetime dt;
  };

struct STRUCT_INT : public STRUCT_BASE
  {
   int data;
  };
Попробуйте так. При вызове указывать размер структуры-наследницы ( sizeof( STRUCT_DATA ) или  sizeof( STRUCT_INT )  )
 
220Volt:
Попробуйте так. При вызове указывать размер структуры-наследницы ( sizeof( STRUCT_DATA ) или  sizeof( STRUCT_INT )  )

или просто размер переменной, чтоб не мучится с названием структур

STRUCT_INT aaa;

int a=sizeof(aaa);
 
Спасибо всем!
Причина обращения: