windows-nt/Source/XPSP1/NT/shell/ext/ftp/ftpwith.cpp
2020-09-26 16:20:57 +08:00

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