Снимает блокировку с дескриптора блока памяти, открывая Visual FoxPro доступ к этому блоку для проведения реорганизации памяти.
void _HUnLock(MHANDLE hand) MHANDLE hand; /* Дескриптор блока памяти. / |
Примечания
_HUnLock( ) не вызывает реорганизацию памяти.
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере программа _RetDateStr( ) возвращает строку типа даты Visual FoxPro, предполагая, что символьный параметр является корректно задает дату. Когда необходимость в блокировании памяти отпадает, вызывается _HUnLock( ), поскольку блокирование может неблагоприятно отразиться на производительности Visual FoxPro.
Код Visual FoxPro
![]() | |
---|---|
SET LIBRARY TO HUNLOCK ? DATES("2/16/95") && returns date {02/16/95} |
Код C
![]() | |
---|---|
#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.