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.
171 lines
8.9 KiB
171 lines
8.9 KiB
|
|
extern const GUID __declspec(selectany) CLSID_CorMetaDataDispenser =
|
|
{ 0xe5cb7a31, 0x7512, 0x11d2, { 0x89, 0xce, 0x0, 0x80, 0xc7, 0x92, 0xe5, 0xd8 } };
|
|
|
|
extern const GUID __declspec(selectany) IID_IMetaDataDispenser =
|
|
{ 0x809c652e, 0x7396, 0x11d2, { 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc } };
|
|
|
|
extern const GUID __declspec(selectany) IID_IMetaDataImport =
|
|
{ 0x7dac8207, 0xd3ae, 0x4c75, { 0x9b, 0x67, 0x92, 0x80, 0x1a, 0x49, 0x7d, 0x44 } };
|
|
|
|
extern const GUID __declspec(selectany) IID_IMetaDataAssemblyImport =
|
|
{ 0xee62470b, 0xe94b, 0x424e, { 0x9b, 0x7c, 0x2f, 0x0, 0xc9, 0x24, 0x9f, 0x93 } };
|
|
|
|
typedef PVOID HCORENUM;
|
|
typedef DWORD mdAssembly;
|
|
typedef DWORD mdAssemblyRef;
|
|
typedef DWORD mdFile;
|
|
typedef DWORD mdExportedType;
|
|
typedef DWORD mdToken;
|
|
typedef DWORD mdTypeDef;
|
|
typedef DWORD mdManifestResource;
|
|
typedef DWORD mdInterfaceImpl;
|
|
typedef DWORD mdTypeRef;
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IMetaDataAssemblyImport
|
|
DECLARE_INTERFACE_(IMetaDataAssemblyImport, IUnknown)
|
|
{
|
|
STDMETHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
STDMETHOD(GetAssemblyProps)( // S_OK or error.
|
|
THIS_
|
|
mdAssembly mda, // [IN] The Assembly for which to get the properties.
|
|
const void **ppbPublicKey, // [OUT] Pointer to the public key.
|
|
ULONG *pcbPublicKey, // [OUT] Count of bytes in the public key.
|
|
ULONG *pulHashAlgId, // [OUT] Hash Algorithm.
|
|
LPWSTR szName, // [OUT] Buffer to fill with name.
|
|
ULONG cchName, // [IN] Size of buffer in wide chars.
|
|
ULONG *pchName, // [OUT] Actual # of wide chars in name.
|
|
void *pMetaData, // [OUT] Assembly MetaData.
|
|
DWORD *pdwAssemblyFlags) PURE; // [OUT] Flags.
|
|
|
|
STDMETHOD(GetAssemblyRefProps)( // S_OK or error.
|
|
THIS_
|
|
mdAssemblyRef mdar, // [IN] The AssemblyRef for which to get the properties.
|
|
const void **ppbPublicKeyOrToken, // [OUT] Pointer to the public key or token.
|
|
ULONG *pcbPublicKeyOrToken, // [OUT] Count of bytes in the public key or token.
|
|
LPWSTR szName, // [OUT] Buffer to fill with name.
|
|
ULONG cchName, // [IN] Size of buffer in wide chars.
|
|
ULONG *pchName, // [OUT] Actual # of wide chars in name.
|
|
void *pMetaData, // [OUT] Assembly MetaData.
|
|
const void **ppbHashValue, // [OUT] Hash blob.
|
|
ULONG *pcbHashValue, // [OUT] Count of bytes in the hash blob.
|
|
DWORD *pdwAssemblyRefFlags) PURE; // [OUT] Flags.
|
|
|
|
STDMETHOD(GetFileProps)( // S_OK or error.
|
|
THIS_
|
|
mdFile mdf, // [IN] The File for which to get the properties.
|
|
LPWSTR szName, // [OUT] Buffer to fill with name.
|
|
ULONG cchName, // [IN] Size of buffer in wide chars.
|
|
ULONG *pchName, // [OUT] Actual # of wide chars in name.
|
|
const void **ppbHashValue, // [OUT] Pointer to the Hash Value Blob.
|
|
ULONG *pcbHashValue, // [OUT] Count of bytes in the Hash Value Blob.
|
|
DWORD *pdwFileFlags) PURE; // [OUT] Flags.
|
|
|
|
STDMETHOD(GetExportedTypeProps)( // S_OK or error.
|
|
THIS_
|
|
mdExportedType mdct, // [IN] The ExportedType for which to get the properties.
|
|
LPWSTR szName, // [OUT] Buffer to fill with name.
|
|
ULONG cchName, // [IN] Size of buffer in wide chars.
|
|
ULONG *pchName, // [OUT] Actual # of wide chars in name.
|
|
mdToken *ptkImplementation, // [OUT] mdFile or mdAssemblyRef or mdExportedType.
|
|
mdTypeDef *ptkTypeDef, // [OUT] TypeDef token within the file.
|
|
DWORD *pdwExportedTypeFlags) PURE; // [OUT] Flags.
|
|
|
|
STDMETHOD(GetManifestResourceProps)( // S_OK or error.
|
|
THIS_
|
|
mdManifestResource mdmr, // [IN] The ManifestResource for which to get the properties.
|
|
LPWSTR szName, // [OUT] Buffer to fill with name.
|
|
ULONG cchName, // [IN] Size of buffer in wide chars.
|
|
ULONG *pchName, // [OUT] Actual # of wide chars in name.
|
|
mdToken *ptkImplementation, // [OUT] mdFile or mdAssemblyRef that provides the ManifestResource.
|
|
DWORD *pdwOffset, // [OUT] Offset to the beginning of the resource within the file.
|
|
DWORD *pdwResourceFlags) PURE;// [OUT] Flags.
|
|
|
|
STDMETHOD(EnumAssemblyRefs)( // S_OK or error
|
|
THIS_
|
|
HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
|
|
mdAssemblyRef rAssemblyRefs[], // [OUT] Put AssemblyRefs here.
|
|
ULONG cMax, // [IN] Max AssemblyRefs to put.
|
|
ULONG *pcTokens) PURE; // [OUT] Put # put here.
|
|
|
|
STDMETHOD(EnumFiles)( // S_OK or error
|
|
THIS_
|
|
HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
|
|
mdFile rFiles[], // [OUT] Put Files here.
|
|
ULONG cMax, // [IN] Max Files to put.
|
|
ULONG *pcTokens) PURE; // [OUT] Put # put here.
|
|
};
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IMetaDataImport
|
|
DECLARE_INTERFACE_(IMetaDataImport, IUnknown)
|
|
{
|
|
STDMETHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
STDMETHOD_(void, CloseEnum)(THIS_ HCORENUM hEnum) PURE;
|
|
STDMETHOD(CountEnum)(THIS_ HCORENUM hEnum, ULONG *pulCount) PURE;
|
|
STDMETHOD(ResetEnum)(THIS_ HCORENUM hEnum, ULONG ulPos) PURE;
|
|
STDMETHOD(EnumTypeDefs)(THIS_ HCORENUM *phEnum, mdTypeDef rTypeDefs[],
|
|
ULONG cMax, ULONG *pcTypeDefs) PURE;
|
|
STDMETHOD(EnumInterfaceImpls)(THIS_ HCORENUM *phEnum, mdTypeDef td,
|
|
mdInterfaceImpl rImpls[], ULONG cMax,
|
|
ULONG* pcImpls) PURE;
|
|
STDMETHOD(EnumTypeRefs)(THIS_ HCORENUM *phEnum, mdTypeRef rTypeRefs[],
|
|
ULONG cMax, ULONG* pcTypeRefs) PURE;
|
|
|
|
STDMETHOD(FindTypeDefByName)( // S_OK or error.
|
|
THIS_
|
|
LPCWSTR szTypeDef, // [IN] Name of the Type.
|
|
mdToken tkEnclosingClass, // [IN] TypeDef/TypeRef for Enclosing class.
|
|
mdTypeDef *ptd) PURE; // [OUT] Put the TypeDef token here.
|
|
|
|
STDMETHOD(GetScopeProps)( // S_OK or error.
|
|
THIS_
|
|
LPWSTR szName, // [OUT] Put the name here.
|
|
ULONG cchName, // [IN] Size of name buffer in wide chars.
|
|
ULONG *pchName, // [OUT] Put size of name (wide chars) here.
|
|
GUID *pmvid) PURE; // [OUT, OPTIONAL] Put MVID here.
|
|
};
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IMetaDataDispenser
|
|
DECLARE_INTERFACE_(IMetaDataDispenser, IUnknown)
|
|
{
|
|
STDMETHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
STDMETHOD(DefineScope)( // Return code.
|
|
THIS_
|
|
REFCLSID rclsid, // [in] What version to create.
|
|
DWORD dwCreateFlags, // [in] Flags on the create.
|
|
REFIID riid, // [in] The interface desired.
|
|
IUnknown **ppIUnk) PURE; // [out] Return interface on success.
|
|
|
|
STDMETHOD(OpenScope)( // Return code.
|
|
THIS_
|
|
LPCWSTR szScope, // [in] The scope to open.
|
|
DWORD dwOpenFlags, // [in] Open mode flags.
|
|
REFIID riid, // [in] The interface desired.
|
|
IUnknown **ppIUnk) PURE; // [out] Return interface on success.
|
|
|
|
STDMETHOD(OpenScopeOnMemory)( // Return code.
|
|
THIS_
|
|
LPCVOID pData, // [in] Location of scope data.
|
|
ULONG cbData, // [in] Size of the data pointed to by pData.
|
|
DWORD dwOpenFlags, // [in] Open mode flags.
|
|
REFIID riid, // [in] The interface desired.
|
|
IUnknown **ppIUnk) PURE; // [out] Return interface on success.
|
|
};
|