You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.0 KiB
66 lines
2.0 KiB
#pragma once
|
|
#include "cor.h"
|
|
|
|
#define ASM_MANIFEST_IMPORT_DEFAULT_ARRAY_SIZE 32
|
|
|
|
class CAssemblyManifestImportCLR: public IAssemblyManifestImport
|
|
{
|
|
public:
|
|
|
|
STDMETHODIMP QueryInterface(REFIID riid,void ** ppv);
|
|
STDMETHODIMP_(ULONG) AddRef();
|
|
STDMETHODIMP_(ULONG) Release();
|
|
|
|
CAssemblyManifestImportCLR();
|
|
~CAssemblyManifestImportCLR();
|
|
|
|
STDMETHOD(GetAssemblyIdentity)(
|
|
/* out */ IAssemblyIdentity **ppName);
|
|
|
|
STDMETHOD(GetNextAssembly)(DWORD nIndex, IManifestInfo **ppName);
|
|
|
|
STDMETHOD(GetNextFile)(DWORD nIndex, IManifestInfo **ppImport);
|
|
|
|
STDMETHOD(ReportManifestType)(
|
|
/*out*/ DWORD *pdwType);
|
|
|
|
|
|
//Functions not implemented
|
|
STDMETHOD(GetSubscriptionInfo)(
|
|
/* out */ IManifestInfo **ppSubsInfo);
|
|
|
|
STDMETHOD(GetNextPlatform)(
|
|
/* in */ DWORD nIndex,
|
|
/* out */ IManifestData **ppPlatformInfo);
|
|
|
|
STDMETHOD(GetManifestApplicationInfo)(
|
|
/* out */ IManifestInfo **ppAppInfo);
|
|
|
|
STDMETHOD(QueryFile)(
|
|
/* in */ LPCOLESTR pwzFileName,
|
|
/* out */ IManifestInfo **ppAssemblyFile);
|
|
|
|
STDMETHOD(Init)(LPCWSTR szManifestFilePath);
|
|
|
|
|
|
private:
|
|
|
|
DWORD _dwSig;
|
|
DWORD _cRef;
|
|
HRESULT _hr;
|
|
|
|
WCHAR _szManifestFilePath[MAX_PATH];
|
|
DWORD _ccManifestFilePath;
|
|
IAssemblyIdentity *_pName;
|
|
IMetaDataAssemblyImport *_pMDImport;
|
|
PBYTE _pMap;
|
|
mdAssembly *_rAssemblyRefTokens;
|
|
DWORD _cAssemblyRefTokens;
|
|
mdFile *_rAssemblyModuleTokens;
|
|
DWORD _cAssemblyModuleTokens;
|
|
};
|
|
|
|
STDAPI CreateAssemblyManifestImportCLR(LPCWSTR szManifestFilePath, IAssemblyManifestImport **ppImport);
|
|
STDAPI DeAllocateAssemblyMetaData(ASSEMBLYMETADATA *pamd);
|
|
STDAPI AllocateAssemblyMetaData(ASSEMBLYMETADATA *pamd);
|
|
|