Commit 8141b99d authored by Andrey Turkin's avatar Andrey Turkin Committed by Alexandre Julliard

atl: Implement AtlModuleLoadTypeLib.

parent 19c2b0bb
...@@ -68,7 +68,7 @@ HRESULT WINAPI AtlModuleInit(_ATL_MODULEW* pM, _ATL_OBJMAP_ENTRYW* p, HINSTANCE ...@@ -68,7 +68,7 @@ HRESULT WINAPI AtlModuleInit(_ATL_MODULEW* pM, _ATL_OBJMAP_ENTRYW* p, HINSTANCE
FIXME("Unknown structure version (size %i)\n",size); FIXME("Unknown structure version (size %i)\n",size);
return E_INVALIDARG; return E_INVALIDARG;
} }
memset(pM,0,pM->cbSize); memset(pM,0,pM->cbSize);
pM->cbSize = size; pM->cbSize = size;
pM->m_hInst = h; pM->m_hInst = h;
...@@ -97,11 +97,28 @@ HRESULT WINAPI AtlModuleInit(_ATL_MODULEW* pM, _ATL_OBJMAP_ENTRYW* p, HINSTANCE ...@@ -97,11 +97,28 @@ HRESULT WINAPI AtlModuleInit(_ATL_MODULEW* pM, _ATL_OBJMAP_ENTRYW* p, HINSTANCE
return S_OK; return S_OK;
} }
HRESULT WINAPI AtlModuleLoadTypeLib(_ATL_MODULEW *pM, LPCOLESTR lpszIndex, HRESULT WINAPI AtlModuleLoadTypeLib(_ATL_MODULEW *pM, LPCOLESTR lpszIndex,
BSTR *pbstrPath, ITypeLib **ppTypeLib) BSTR *pbstrPath, ITypeLib **ppTypeLib)
{ {
FIXME("(%p, %s, %p, %p): stub\n", pM, debugstr_w(lpszIndex), pbstrPath, ppTypeLib); HRESULT hRes;
return E_FAIL; OLECHAR path[MAX_PATH+8]; /* leave some space for index */
TRACE("(%p, %s, %p, %p)\n", pM, debugstr_w(lpszIndex), pbstrPath, ppTypeLib);
if (!pM)
return E_INVALIDARG;
GetModuleFileNameW(pM->m_hInstTypeLib, path, MAX_PATH);
if (lpszIndex)
lstrcatW(path, lpszIndex);
hRes = LoadTypeLib(path, ppTypeLib);
if (FAILED(hRes))
return hRes;
*pbstrPath = SysAllocString(path);
return S_OK;
} }
HRESULT WINAPI AtlModuleTerm(_ATL_MODULEW* pM) HRESULT WINAPI AtlModuleTerm(_ATL_MODULEW* pM)
...@@ -238,7 +255,7 @@ HRESULT WINAPI AtlInternalQueryInterface(LPVOID this, const _ATL_INTMAP_ENTRY* p ...@@ -238,7 +255,7 @@ HRESULT WINAPI AtlInternalQueryInterface(LPVOID this, const _ATL_INTMAP_ENTRY* p
* AtlModuleRegisterServer [ATL.@] * AtlModuleRegisterServer [ATL.@]
* *
*/ */
HRESULT WINAPI AtlModuleRegisterServer(_ATL_MODULEW* pM, BOOL bRegTypeLib, const CLSID* clsid) HRESULT WINAPI AtlModuleRegisterServer(_ATL_MODULEW* pM, BOOL bRegTypeLib, const CLSID* clsid)
{ {
FIXME("%p %d %s\n", pM, bRegTypeLib, debugstr_guid(clsid)); FIXME("%p %d %s\n", pM, bRegTypeLib, debugstr_guid(clsid));
return S_OK; return S_OK;
...@@ -362,7 +379,7 @@ HRESULT WINAPI AtlModuleUnregisterServer(_ATL_MODULEW *pm, const CLSID *clsid) ...@@ -362,7 +379,7 @@ HRESULT WINAPI AtlModuleUnregisterServer(_ATL_MODULEW *pm, const CLSID *clsid)
* *
* If the class name is NULL then it a class with a name of "ATLxxxxxxxx" is * If the class name is NULL then it a class with a name of "ATLxxxxxxxx" is
* registered, where the x's represent an unique value. * registered, where the x's represent an unique value.
* *
*/ */
ATOM WINAPI AtlModuleRegisterWndClassInfoW(_ATL_MODULEW *pm, _ATL_WNDCLASSINFOW *wci, WNDPROC *pProc) ATOM WINAPI AtlModuleRegisterWndClassInfoW(_ATL_MODULEW *pm, _ATL_WNDCLASSINFOW *wci, WNDPROC *pProc)
{ {
...@@ -432,8 +449,8 @@ void WINAPI AtlModuleAddCreateWndData(_ATL_MODULEW *pM, _AtlCreateWndData *pData ...@@ -432,8 +449,8 @@ void WINAPI AtlModuleAddCreateWndData(_ATL_MODULEW *pM, _AtlCreateWndData *pData
* *
* NOTE: I failed to find any good description of this function. * NOTE: I failed to find any good description of this function.
* Tests show that this function extracts one of _AtlCreateWndData * Tests show that this function extracts one of _AtlCreateWndData
* records from the current thread from a list * records from the current thread from a list
* *
*/ */
LPVOID WINAPI AtlModuleExtractCreateWndData(_ATL_MODULEW *pM) LPVOID WINAPI AtlModuleExtractCreateWndData(_ATL_MODULEW *pM)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment