Loading ...
Sorry, an error occurred while loading the content.

46062Re: Passing / Receiving large (64bit) parameters in API Calls

Expand Messages
  • mike_collins_23
    Jan 22, 2013
      Hi Stefan,

      You can download the complete package at:

      https://www.vector.com/vi_downloadcenter_en.html?product=xllib&formular_treffer_submit=1&sprachumschaltung=1

      and select XL Driver Library 8.3 (it's just over 18MB).

      The relevant part of vxlapi.h is:

      //////////////////////////////////////////////////////////////////////
      // For the timestamps and the access mask the API use 64 bit values
      typedef unsigned __int64 XLuint64;

      //////////////////////////////////////////////////////////////////////
      typedef char *XLstringType;

      //////////////////////////////////////////////////////////////////////
      // accessmask
      typedef XLuint64 XLaccess;

      //////////////////////////////////////////////////////////////////////

      and of the Driver Manual:

      3.1.8 xlGetChannelMask
      Syntax XLaccess xlGetChannelMask (
      int hwType,
      int hwIndex,
      int hwChannel);
      Description Retrieves the channel mask of a particular hardware channel.
      Input Parameters „­ hwType
      Required to distinguish the different hardware types, e.g.
      - -1
      - XL_HWTYPE_CANCARDXL
      - XL_HWTYPE_CANBOARDXL
      - ¡K
      Parameter -1 can be used if the hardware type does not matter.
      „­ hwIndex
      Required to distinguish between two or more devices of the same hardware
      type (-1, 0, 1¡K). Parameter -1 is used to retrieve the first available hardware.
      The type depends on hwType.
      „­ hwChannel
      Required to distinguish the hardware channel of the selected device (-1, 0, 1, ¡K).
      Parameter -1 can be used to retrieve the first available channel.
      Return Value Returns the channel mask.

      Mike

      --- In libertybasic@yahoogroups.com, Stefan Pendl wrote:
      >
      > Am 21.01.2013 17:52, schrieb mike_collins_23:
      > > Hi Stefan,
      > >
      > > I think I understand your example, at least in terms of passing pointers to the structures. I didn't really understand the "GetProcAddress" part and what the different values for "pGetDiskFreeSpaceEx" meant (don't think it matters for the purpose of our discussion).
      > >
      > > I still have a problem receiving a 64bit number as the returned value. When I try the following code, Liberty disappears with no error messages:
      > >
      > > struct ChannelMask,_
      > > ChannelMaskLow as ulong,_
      > > ChannelMaskHigh as ulong
      > >
      > > calldll #CAN, "xlGetChannelMask",_
      > > hwType as short,_
      > > hwIndex as short,_
      > > hwChannel as short,_
      > > ChannelMask as struct
      > >
      > > print "xlGetChannelMask = "; ChannelMask.ChannelMaskLow.struct + ChannelMask.ChannelMaskLow.struct * hexdec("&H100000000")
      > >
      > > Obviously there was some prior code to open the DLL etc. and I have called some other simple functions of this DLL which return with a good status.
      > >
      > > It behaves OK if I make ChannelMask a Long but presumably I'm not then getting the full return value ?
      > >
      > > Mike
      > >
      >
      > A structure is not a valid return type for LB.
      >
      > We would need to know how the C declaration of the API function looks
      > like to make the correct decision.
      >
      > Is there a place on the net where one can download the C header file?
      >
      >
      > --
      > Stefan Pendl
      > http://stefanpendl.runbasichosting.com/
      >
      > LB 4.04 Pro ... http://www.libertybasic.com/assist.html
      > LB 4.04 ....... http://www.libertybasic.com/lb404setup.exe
      >
      > LB Community Wiki .............. http://basic.wikispaces.com/
      > LB Programmer's Encyclopedia ... http://lbpe.wikispaces.com/
      > LB Bug Tracker ................. http://libertybasicbugs.wikispaces.com/
      >
      > Books at http://www.lulu.com/ and http://www.amazon.com/
      > Alyce Watson ... APIs for Liberty BASIC
      > Carl Gundel .... Beginning Programming with Liberty BASIC
      >
      > Windows 7 Home Premium 64-bit SP1
      > AMD Turion X2 RM-70 2GHz, 4GB RAM
      >
    • Show all 9 messages in this topic