Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sperrt ein Speicherhandle, um zu verhindern, dass es bei einer Visual FoxPro-Speicherreorganisation verschoben wird.
void _HLock(MHANDLE hand)
MHANDLE hand; /* Memory handle. */
Hinweise
_HLock( ) löst keine Reorganisation des Speichers aus. Heben Sie die Sperrung des MHANDLE-Handles auf, sobald sie nicht mehr benötigt wird.
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 der entsprechende Zeichenparameter auf dem Bildschirm angezeigt. _HandToPtr( ) übersetzt das Speicherhandle des API-Parameters in einen C-Zeiger. Möglicherweise wird der Speicher von Visual FoxPro während des Aufrufens von _PutStr( ) reorganisiert. Aus diesem Grund wird das Speicherhandle mit _HLock( ) gesperrt, um eine einwandfreie Ausführung zu gewährleisten. Darüber hinaus wird im Beispiel am Ende _HUnLock( ) aufgerufen, da die Leistung von Visual FoxPro möglicherweise durch gesperrte Speicherhandles negativ beeinflusst wird.
Visual FoxPro-Code
SET LIBRARY TO HLOCK
= HLOCK("Hello, world.") && displays "Hello, world" on screen
C-Code
#include <pro_ext.h>
void NullTerminate(Value FAR *cVal)
{
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1))
{
_Error(182); // "Insufficient memory"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
}
FAR Example(ParamBlk FAR *parm)
{
NullTerminate(&parm->p[0].val);
_HLock(parm->p[0].val.ev_handle);
_PutStr(_HandToPtr(parm->p[0].val.ev_handle));
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"HLOCK", (FPFI) Example, 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 | _HUnlock( ), API-Bibliotheksroutine | _MemAvail( ), API-Bibliotheksroutine | _SetHandSize( ), API-Bibliotheksroutine | Zugreifen auf die Visual FoxPro-API