Esempio n. 1
0
void allocIMalloc(bool bFree)
{
    IMalloc *imalloc = NULL;
    HRESULT hr = CoGetMalloc(1, &imalloc);
    assert(SUCCEEDED(hr));
    int* leaked_memory = static_cast<int*>(imalloc->Alloc(34));
    if (bFree)
    {
        imalloc->Free(leaked_memory);
    }
}
Esempio n. 2
0
LPITEMIDLIST Pidl_Create(UINT cbSize)
{
	LPITEMIDLIST pidl = NULL;

	IMalloc* pMalloc;
	if(FAILED(SHGetMalloc(&pMalloc)))
		return false;

	pidl = (LPITEMIDLIST) pMalloc->Alloc(cbSize);
	if(pidl)
	   ZeroMemory(pidl, cbSize);

	pMalloc->Release();
return pidl;
}
Esempio n. 3
0
COlePropPage::COlePropPage(CLSID clsidPage, LPUNKNOWN* lpAryUnk, int& count) : CPropertyPage(COlePropPage::IDD),
	m_clsidPage(clsidPage), m_pObject(lpAryUnk)
{
	// Create COM Property page and get IPropertyPage interface
	EnableAutomation();
	HRESULT hRes = E_FAIL;
	m_pPropPage=NULL;
	try {
		hRes = CoCreateInstance( m_clsidPage, NULL, CLSCTX_INPROC, IID_IPropertyPage, (void**)&m_pPropPage );
		if( FAILED( hRes ) )
			AfxThrowOleException( hRes );
		
		hRes = m_pPropPage->SetPageSite( (IPropertyPageSite*) GetInterface( &IID_IPropertyPageSite ) );
		if( FAILED( hRes ) )
			AfxThrowOleException( hRes );
		
		hRes = m_pPropPage->SetObjects( count, m_pObject );
		if( FAILED( hRes ) )
			AfxThrowOleException( hRes );
		
		IMalloc     *pIMalloc;
		if (FAILED(CoGetMalloc(MEMCTX_TASK, &pIMalloc)))
			AfxThrowOleException(E_FAIL);
		
		PROPPAGEINFO* pPPI = (PROPPAGEINFO*) pIMalloc->Alloc(sizeof(PROPPAGEINFO));
		pPPI->cb = sizeof(PROPPAGEINFO);
		hRes = m_pPropPage->GetPageInfo(pPPI);
#ifndef UNICODE
		m_strCaption.Format("%S", pPPI->pszTitle);
#else
		m_strCaption = pPPI->pszTitle;
#endif
		m_psp.pszTitle = m_strCaption;
		m_psp.dwFlags |= PSP_USETITLE;
		m_psp.hIcon = ::LoadIcon(NULL, IDI_QUESTION);
		
		pIMalloc->Free(pPPI);
		pIMalloc->Release();
		
		
	} catch (COleException * e)
	{
		throw (e);
	}
}
Esempio n. 4
0
// ---
HRESULT CCodeGen::ExtractString( UINT id, BYTE** output ) {
	
	if ( !output ) 
		return E_INVALIDARG;
	
	static char buff[1000];
	HINSTANCE inst = _Module.GetModuleInstance();
	int len = ::LoadString( inst, id, buff, sizeof(buff) ) + 1;
	
	if ( len ) {
		IMalloc* alloc = 0;
		HRESULT hr = ::CoGetMalloc( 1, &alloc );
		if ( SUCCEEDED(hr) ) {
			*output = (BYTE*)alloc->Alloc( len );
			::memcpy( *output, buff, len );
			alloc->Release();
		}
		return hr;
	}
	else
		return HRESULT_FROM_WIN32( ::GetLastError() );
}
HRESULT C$$Safe_root$$PropPage::GetPageInfo( LPPROPPAGEINFO pPageInfo )
{
	IMalloc* pIMalloc;
	if (FAILED( CoGetMalloc( MEMCTX_TASK, &pIMalloc ) ))
		return E_FAIL;

	pPageInfo->pszTitle = (LPOLESTR)pIMalloc->Alloc( 256 );

	pIMalloc->Release();

	if (!pPageInfo->pszTitle)
		return E_OUTOFMEMORY;

	static const char szTitle[] = "$$Safe_root$$";
	mbstowcs( pPageInfo->pszTitle, szTitle, strlen( szTitle ) );

	// Populate the page info structure
	pPageInfo->cb					= sizeof(PROPPAGEINFO);
	pPageInfo->size.cx      = 100;
	pPageInfo->size.cy      = 100;
	pPageInfo->pszDocString = NULL;
	pPageInfo->pszHelpFile  = NULL;
	pPageInfo->dwHelpContext= 0;

	// Create the property page in order to determine its size
	HWND const hWnd = CreateDialogParam( theApp.m_hInstance, MAKEINTRESOURCE( IDD_PROPPAGE ), 
													 ::GetDesktopWindow(), DialogProc, 0 );
	if (hWnd)
	{
		// Get the dialog size and destroy the window
		RECT rc;
		::GetWindowRect( hWnd, &rc );
		pPageInfo->size.cx = rc.right - rc.left;
		pPageInfo->size.cy = rc.bottom - rc.top;
		::DestroyWindow( hWnd );
	}

	return S_OK;
}
Esempio n. 6
0
INT_PTR FileInfViewDlgShow(HINSTANCE hInst, HWND hwndOwner, CFilesInf* pFilesInf)
{
	 HRSRC r = FindResource(hInst, MAKEINTRESOURCE(IDD_DLG_FILES_INF), RT_DIALOG);
	 HGLOBAL g = LoadResource(hInst, r);

	 IMalloc *pIMalloc;
	 HRESULT hr = SHGetMalloc(&pIMalloc);
	 if (FAILED(hr))
		 return 0;

	 FilesInfDlgData* dlgData = (FilesInfDlgData*) pIMalloc->Alloc(sizeof(FilesInfDlgData));
	 dlgData->filesInf = pFilesInf;

   INT_PTR ret = DialogBoxIndirectParam(hInst, 
       (LPDLGTEMPLATE)LockResource(g), 
       hwndOwner, 
       (DLGPROC)FileInfViewDlgProc,
			 (LPARAM)dlgData); 

   pIMalloc->Free(dlgData);
	 pIMalloc->Release();
    return ret; 
}