Unlocks a memory handle so that Visual FoxPro can access it during memory reorganization.
void _HUnLock(MHANDLE hand) MHANDLE hand; /* Memory handle. / |
Remarks
_HUnLock(В ) doesn't cause memory reorganization.
For more information on how to create an API library and integrate it with Visual FoxPro, see Accessing the Visual FoxPro API.
Example
The following example uses _RetDateStr(В ) to return a Visual FoxPro date type, assuming that the character parameter is a proper date. It issues _HUnLock(В ) when memory handles no longer need to be locked, because the performance of Visual FoxPro can be adversely affected by locked memory handles.
Visual FoxPro Code
В | Copy Code |
---|---|
SET LIBRARY TO HUNLOCK ? DATES("2/16/95") && returns date {02/16/95} |
C Code
В | Copy Code |
---|---|
#include <pro_ext.h> void FAR dates(ParamBlk FAR *parm) { MHANDLE mh; char FAR *instring; if ((mh = _AllocHand(parm->p[0].val.ev_length + 1)) == 0) { _Error(182); // "Insufficient memory" } _HLock(parm->p[0].val.ev_handle); instring = _HandToPtr(parm->p[0].val.ev_handle); instring[parm->p[0].val.ev_length] = '\0'; _RetDateStr(instring); _HUnLock(parm->p[0].val.ev_handle); } FoxInfo myFoxInfo[] = { {"DATES", (FPFI) dates, 1, "C"} }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |