2020-09-30 17:12:32 +02:00

46 lines
775 B
C++

/**
* ftpwith.cpp - "With" procedures
**/
#include "priv.h"
/**
* With_Hglob
* Allocate a moveable HGLOBAL of the requested size, lock it, then call
* the callback. On return, unlock it and get out.
* Returns the allocated HGLOBAL, or 0.
**/
HGLOBAL With_Hglob(UINT cb, HGLOBWITHPROC pfn, LPVOID pvRef)
{
HGLOBAL hglob = GlobalAlloc(GHND, cb);
if (hglob)
{
LPVOID pv = GlobalLock(hglob);
if (pv)
{
BOOL fRc = pfn(pv, pvRef);
GlobalUnlock(hglob);
if (!fRc)
{
GlobalFree(hglob);
hglob = 0;
}
}
else
{
GlobalFree(hglob);
hglob = 0;
}
}
return hglob;
}