/* * TYPELIB * * Copyright 1997 Marcus Meissner */ #include #include #include #include "wintypes.h" #include "heap.h" #include "windows.h" #include "winreg.h" #include "winerror.h" #include "oleauto.h" #include "wine/obj_base.h" #include "objbase.h" #include "debug.h" #include "winversion.h" /**************************************************************************** * QueryPathOfRegTypeLib16 [TYPELIB.14] * * the path is "Classes\Typelib\\.\\win16\" * RETURNS * path of typelib */ HRESULT WINAPI QueryPathOfRegTypeLib16( REFGUID guid, /* [in] referenced guid */ WORD wMaj, /* [in] major version */ WORD wMin, /* [in] minor version */ LCID lcid, /* [in] locale id */ LPBSTR16 path /* [out] path of typelib */ ) { char xguid[80]; char typelibkey[100],pathname[260]; DWORD plen; if (HIWORD(guid)) { WINE_StringFromCLSID(guid,xguid); sprintf(typelibkey,"SOFTWARE\\Classes\\Typelib\\%s\\%d.%d\\%ld\\win16", xguid,wMaj,wMin,lcid&0xff ); } else { sprintf(xguid,"",(DWORD)guid); FIXME(ole,"(%s,%d,%d,0x%04lx,%p),can't handle non-string guids.\n",xguid,wMaj,wMin,(DWORD)lcid,path); return E_FAIL; } plen = sizeof(pathname); if (RegQueryValue16(HKEY_LOCAL_MACHINE,typelibkey,pathname,&plen)) { FIXME(ole,"key %s not found\n",typelibkey); return E_FAIL; } *path = SysAllocString16(pathname); return S_OK; } /**************************************************************************** * QueryPathOfRegTypeLib32 [OLEAUT32.164] * RETURNS * path of typelib */ HRESULT WINAPI QueryPathOfRegTypeLib32( REFGUID guid, /* [in] referenced guid */ WORD wMaj, /* [in] major version */ WORD wMin, /* [in] minor version */ LCID lcid, /* [in] locale id */ LPBSTR32 path /* [out] path of typelib */ ) { char xguid[80]; char typelibkey[100],pathname[260]; DWORD plen; if (HIWORD(guid)) { WINE_StringFromCLSID(guid,xguid); sprintf(typelibkey,"SOFTWARE\\Classes\\Typelib\\%s\\%d.%d\\%ld\\win32", xguid,wMaj,wMin,lcid&0xff ); } else { sprintf(xguid,"",(DWORD)guid); FIXME(ole,"(%s,%d,%d,0x%04lx,%p),stub!\n",xguid,wMaj,wMin,(DWORD)lcid,path); return E_FAIL; } plen = sizeof(pathname); if (RegQueryValue16(HKEY_LOCAL_MACHINE,typelibkey,pathname,&plen)) { FIXME(ole,"key %s not found\n",typelibkey); return E_FAIL; } *path = HEAP_strdupAtoW(GetProcessHeap(),0,pathname); return S_OK; } /****************************************************************************** * LoadTypeLib [TYPELIB.3] Loads and registers a type library * NOTES * Docs: OLECHAR32 FAR* szFile * Docs: iTypeLib FAR* FAR* pptLib * * RETURNS * Success: S_OK * Failure: Status */ HRESULT WINAPI LoadTypeLib16( OLECHAR32 *szFile, /* [in] Name of file to load from */ void * *pptLib) /* [out] Pointer to pointer to loaded type library */ { FIXME(ole, "('%s',%p): stub\n",debugstr_w((LPWSTR)szFile),pptLib); if (pptLib!=0) *pptLib=0; return E_FAIL; } /****************************************************************************** * LoadTypeLib32 [OLEAUT32.161] * Loads and registers a type library * NOTES * Docs: OLECHAR32 FAR* szFile * Docs: iTypeLib FAR* FAR* pptLib * * RETURNS * Success: S_OK * Failure: Status */ HRESULT WINAPI LoadTypeLib32( OLECHAR32 *szFile, /* [in] Name of file to load from */ void * *pptLib) /* [out] Pointer to pointer to loaded type library */ { FIXME(ole, "('%s',%p): stub\n",debugstr_w(szFile),pptLib); if (pptLib!=0) *pptLib=0; return E_FAIL; } /****************************************************************************** * LoadRegTypeLib [OLEAUT32.162] */ HRESULT WINAPI LoadRegTypeLib( REFGUID rguid, unsigned short wVerMajor, unsigned short wVerMinor, LCID lcid, void** pptLib) { FIXME(ole, "(): stub\n"); if (pptLib!=0) *pptLib=0; return E_FAIL; } /****************************************************************************** * RegisterTypeLib32 [OLEAUT32.163] * Adds information about a type library to the System Registry * NOTES * Docs: ITypeLib FAR * ptlib * Docs: OLECHAR32 FAR* szFullPath * Docs: OLECHAR32 FAR* szHelpDir * * RETURNS * Success: S_OK * Failure: Status */ HRESULT WINAPI RegisterTypeLib32( ITypeLib * ptlib, /*[in] Pointer to the library*/ OLECHAR32 * szFullPath, /*[in] full Path of the library*/ OLECHAR32 * szHelpDir) /*[in] dir to the helpfile for the library, may be NULL*/ { FIXME(ole, "(%p,%s,%s): stub\n",ptlib, debugstr_w(szFullPath),debugstr_w(szHelpDir)); return S_OK; /* FIXME: pretend everything is OK */ } /**************************************************************************** * OABuildVersion (TYPELIB.15) * RETURNS * path of typelib */ DWORD WINAPI OABuildVersion(void) { WINDOWS_VERSION ver = VERSION_GetVersion(); switch (ver) { case WIN95: return MAKELONG(0xbd0, 0xa); /* Win95A */ case WIN31: return MAKELONG(0xbd3, 0x3); /* WfW 3.11 */ default: FIXME(ole, "Version value not known yet. Please investigate it !"); return MAKELONG(0xbd0, 0xa); /* return Win95A for now */ } }