_HUnlock( ), API-Bibliotheksroutine

Hebt die Sperrung eines Speicherhandles auf, damit Visual FoxPro während der Speicherreorganisation darauf zugreifen kann.

void _HUnLock(MHANDLE hand)
MHANDLE hand;            /* Memory handle. /

Hinweise

_HUnLock( ) löst keine Reorganisation des Speichers aus.

Weitere Informationen zum Erstellen einer API-Bibliothek und ihrer Integration in Visual FoxPro finden Sie unter Zugreifen auf die Visual FoxPro-API.

Beispiel

Im folgenden Beispiel wird mit _RetDateStr( ) ein Datentyp von Visual FoxPro zurückgegeben, wobei angenommen wird, dass es sich bei dem Zeichenparameter um ein korrektes Datum handelt. _HUnLock( ) wird aufgerufen, wenn Speicherhandles nicht mehr gesperrt sein müssen, da die Leistungsfähigkeit von Visual FoxPro durch gesperrte Speicherhandles beeinträchtigt werden kann.

Visual FoxPro-Code

SET LIBRARY TO HUNLOCK 
? DATES("2/16/95")  && returns date {02/16/95}

C-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
};

Siehe auch

_AllocHand( ), API-Bibliotheksroutine | _FreeHand( ), API-Bibliotheksroutine | _GetHandSize( ), API-Bibliotheksroutine | _HandToPtr( ), API-Bibliotheksroutine | _HLock( ), API-Bibliotheksroutine | _MemAvail( ), API-Bibliotheksroutine | _SetHandSize( ), API-Bibliotheksroutine