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;
|
||
|
}
|
||
|
|