fusion: Add implementation for CreateAssemblyCacheItem.

This commit is contained in:
André Hentschel 2014-11-30 13:15:45 +01:00 committed by Alexandre Julliard
parent 3488f88fe6
commit bf70fe3611
1 changed files with 32 additions and 15 deletions

View File

@ -41,6 +41,19 @@
WINE_DEFAULT_DEBUG_CHANNEL(fusion);
typedef struct {
IAssemblyCache IAssemblyCache_iface;
LONG ref;
HANDLE lock;
} IAssemblyCacheImpl;
typedef struct {
IAssemblyCacheItem IAssemblyCacheItem_iface;
LONG ref;
} IAssemblyCacheItemImpl;
static const WCHAR cache_mutex_nameW[] =
{'_','_','W','I','N','E','_','F','U','S','I','O','N','_','C','A','C','H','E','_','M','U','T','E','X','_','_',0};
@ -141,13 +154,6 @@ static BOOL get_assembly_directory(LPWSTR dir, DWORD size, const char *version,
/* IAssemblyCache */
typedef struct {
IAssemblyCache IAssemblyCache_iface;
LONG ref;
HANDLE lock;
} IAssemblyCacheImpl;
static inline IAssemblyCacheImpl *impl_from_IAssemblyCache(IAssemblyCache *iface)
{
return CONTAINING_RECORD(iface, IAssemblyCacheImpl, IAssemblyCache_iface);
@ -351,16 +357,33 @@ done:
return hr;
}
static const IAssemblyCacheItemVtbl AssemblyCacheItemVtbl;
static HRESULT WINAPI IAssemblyCacheImpl_CreateAssemblyCacheItem(IAssemblyCache *iface,
DWORD dwFlags,
PVOID pvReserved,
IAssemblyCacheItem **ppAsmItem,
LPCWSTR pszAssemblyName)
{
FIXME("(%p, %d, %p, %p, %s) stub!\n", iface, dwFlags, pvReserved,
IAssemblyCacheItemImpl *item;
FIXME("(%p, %d, %p, %p, %s) semi-stub!\n", iface, dwFlags, pvReserved,
ppAsmItem, debugstr_w(pszAssemblyName));
return E_NOTIMPL;
if (!ppAsmItem)
return E_INVALIDARG;
*ppAsmItem = NULL;
item = HeapAlloc(GetProcessHeap(), 0, sizeof(IAssemblyCacheItemImpl));
if (!item)
return E_OUTOFMEMORY;
item->IAssemblyCacheItem_iface.lpVtbl = &AssemblyCacheItemVtbl;
item->ref = 1;
*ppAsmItem = &item->IAssemblyCacheItem_iface;
return S_OK;
}
static HRESULT WINAPI IAssemblyCacheImpl_CreateAssemblyScavenger(IAssemblyCache *iface,
@ -560,12 +583,6 @@ HRESULT WINAPI CreateAssemblyCache(IAssemblyCache **ppAsmCache, DWORD dwReserved
/* IAssemblyCacheItem */
typedef struct {
IAssemblyCacheItem IAssemblyCacheItem_iface;
LONG ref;
} IAssemblyCacheItemImpl;
static inline IAssemblyCacheItemImpl *impl_from_IAssemblyCacheItem(IAssemblyCacheItem *iface)
{
return CONTAINING_RECORD(iface, IAssemblyCacheItemImpl, IAssemblyCacheItem_iface);