National Instruments 320685D-01 Manuel D’Utilisation

Page de 211
Chapter 4
Windows 3.1 Compiler/Linker Issues
LabWindows/CVI Programmer Reference Manual
4-20
©
 National Instruments Corporation
int g(struct x *ptr)
{
int retval;
unsigned short cw387;
char *savedPointer;
savedPointer = ptr->name;
if (Alloc16BitAlias(ptr->name, ITEM_SIZE, &ptr->name) == -1)
return <
error code>;
cw387 = Get387CW();
retval = (int) InvokeIndirectFunction(__static_g, ptr);
Set387CW(cw387);
Free16BitAlias(ptr->name, ITEM_SIZE);
ptr->name = savedPointer;
return retval;
}
DLL Exports Functions by Ordinal Value Only
If your DLL does not export its functions by name, but by ordinal number only, you must 
modify the 
GetProcAddress 
function calls in the glue code. Instead of passing the name of 
the function as the second parameter, pass 
PASS_WORD_AS_POINTER(
OrdinalNumber)
where 
OrdinalNumber
 is the ordinal number for the function. For example, if the ordinal 
number for the function 
InstallCallback
 is 5, change the glue code as follows.
Generated Glue Code:
if (!(fp = GetProcAddress(DLLHandle,"InstallCallback")))
{
funcname = "_InstallCallback";
goto FunctionNotFoundError;
}
Change to:
if (!(fp = GetProcAddress(DLLHandle, PASS_WORD_AS_POINTER(5))))
{
funcname = "_InstallCallback";
goto FunctionNotFoundError;
}
00ProRef.book : 06chap04.fm  Page 20  Monday, March 9, 1998  3:23 PM