Снимает блокировку с дескриптора блока памяти, открывая Visual FoxPro доступ к этому блоку для проведения реорганизации памяти.
void _HUnLock(MHANDLE hand) MHANDLE hand; /* Дескриптор блока памяти. / |
Примечания
_HUnLock( ) не вызывает реорганизацию памяти.
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере программа _RetDateStr( ) возвращает строку типа даты Visual FoxPro, предполагая, что символьный параметр является корректно задает дату. Когда необходимость в блокировании памяти отпадает, вызывается _HUnLock( ), поскольку блокирование может неблагоприятно отразиться на производительности Visual FoxPro.
Код Visual FoxPro
Copy Code | |
|---|---|
SET LIBRARY TO HUNLOCK
? DATES("2/16/95") && returns date {02/16/95} | |
Код C
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
}; | |
Смотрите также
Справочное руководство
Процедура библиотеки API _AllocHand( )Процедура библиотеки API _FreeHand( )
Процедура библиотеки API _GetHandSize( )
Процедура библиотеки API _HandToPtr( )
Процедура библиотеки API _HLock( )
Процедура библиотеки API _MemAvail( )
Процедура библиотеки API _SetHandSize( )
Прочие ресурсы
Конструкции библиотеки API
© Microsoft Corporation. All rights reserved. Microsoft is not reponsible for the contents of the translated help topics.