46 lines
1 KiB
C++
46 lines
1 KiB
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;
|
|
}
|
|
|