Chapter 4 Windows3.1 Compiler/Linker Issues
©
National Instruments Corporation 4-5 LabWindows/CVI Programmer Reference Manual
You can use the argument types char, unsigned char, int, unsigned int, short,
unsigned short, long, unsigned long, float, and double, as well as pointers to
any type, and arrays of any type. You can use typedefs for these types.
You can use the return types void, char, unsigned char, int, unsigned int,
short, unsigned short, long, and unsigned long, as well as pointers to any type.
You can use typedefs for these types.
You can use the return types float and double only if the DLL is created with a
MicrosoftC compiler, and the functions returning floats or double are declared with the
cdecl calling convention. You do not have to modify the glue code generated for
functions that return float or double values.
In the DLL header file, enum sizes must be consistent between LabW indows/CVI and the
compiler for the DLL.
typedef enum {
No_Error,
Device_Busy,
Device_Not_Found
} ErrorType;
The size of ErrorType is 2 bytes in Visual C++, whereas it is 1 byte in
LabWindows/CVI. To force LabWindows/CVI to treat ErrorType as 2 bytes, add
another enum value explicitly initialized to a 2-byte value, such as the following.
ErrorType_Dummy = 32767
If the DLL you are using perfo rms DMA on a buf fer yo u pass to it, you might experi ence
a problem. The DLL might attempt to lock the buffer in memory by callingthe Windows
SDK function GlobalPageLock. GlobalPageLock fails on buffers allocated with the
Watco m malloc function that LabWindows/CVI uses in 32-bit mode.
Write the DLL so that if GlobalPageLock fails, the DLL attempts to lock the buffer
with the following code:
int DPMILock (void *buffer, unsigned long size)
{DWORD base;
unsigned sel, offset;
union _REGS regs;
sel = SELECTOROF(buffer);
offset = OFFSETOF(buffer);
base = GetSelectorBase(sel);
base = base+offset;
regs.x.ax = 0x600; /* DPMI lock memory function */
regs.x.bx = HIWORD(base);
regs.x.cx = LOWORD(base);
regs.x.di = LOWORD(size);
00ProRef.book : 06chap04.fm Page 5 Monday, March 9, 1998 3:23 PM