/*++ Module Name: WrpMBWrp.cpp Abstract: A wrapper for my metabase wrapper wrapper. Why? All it does is provide AFX support for CString classes. Everything else is passed on to the parent Author: Boyd Multerer bmulterer@accessone.com --*/ //C:\nt\public\sdk\lib\i386 #include "stdafx.h" #include #include "wrapmb.h" #include "WrpMBWrp.h" //----------------------------------------------------------------------------- BOOL CAFX_MetaWrapper::GetString( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, CString &sz, DWORD dwFlags ) { PCHAR pData = NULL; DWORD cbData = 0; DWORD err = 0; BOOL f; // first, get the size of the data that we are looking for - it will fail because of the NULL, // but, the size we need should be in cbData; f = GetData( pszPath, dwPropID, dwUserType, STRING_METADATA, NULL, &cbData ); // check the error - it should be some sort of memory error err = GetLastError(); // it is ok that the GetData failed, but the reason had better be ERROR_INSUFFICIENT_BUFFER // otherwise, it is something we can't handle if ( err != ERROR_INSUFFICIENT_BUFFER ) return FALSE; // allocate the buffer pData = (PCHAR)GlobalAlloc( GPTR, cbData + 1 ); if ( !pData ) return FALSE; // zero out the buffer ZeroMemory( pData, cbData + 1 ); // first, get the size of the data that we are looking for f = GetData( pszPath, dwPropID, dwUserType, STRING_METADATA, pData, &cbData ); // if that getting failed, we need to cleanup if ( !f ) { GlobalFree( pData ); return FALSE; } // set the answer sz = pData; // clean up GlobalFree( pData ); // return the allocated buffer return TRUE; }