Win32 API 日本語リファレンス
ホームSystem.WinRT.Metadata › IMetaDataImport

IMetaDataImport

COM
IID7dac8207-d3ae-4c75-9b67-92801a497d44継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ポータブル実行可能 (PE) ファイル、あるいはタイプライブラリやスタンドアロンのランタイムメタデータバイナリなどの他のソースから、既存のメタデータをインポートおよび操作するためのメソッドを提供します。

メソッド 62

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 void CloseEnum(void* hEnum)

指定したハンドルで識別される列挙子を閉じます。

hEnumvoid*inout閉じる列挙子のハンドル。

解説(Remarks)

hEnum で指定するハンドルは、以前の EnumName 呼び出し (たとえば IMetaDataImport::EnumTypeDefs) から取得します。

vtbl 4 HRESULT CountEnum(void* hEnum, DWORD* pulCount)

指定した列挙子で取得された列挙内の要素数を取得します。

hEnumvoid*inout列挙子のハンドル。
pulCountDWORD*inout列挙された要素の数。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

hEnum で指定するハンドルは、以前の EnumName 呼び出し (たとえば IMetaDataImport::EnumTypeDefs) から取得します。

vtbl 5 HRESULT ResetEnum(void* hEnum, DWORD ulPos)

指定した列挙子を指定した位置にリセットします。

hEnumvoid*inoutリセットする列挙子。
ulPosDWORDin列挙子を配置する新しい位置。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 6 HRESULT EnumTypeDefs(void** phEnum, DWORD* rTypeDefs, DWORD cMax, DWORD* pcTypeDefs)

現在のスコープ内のすべての型を表す TypeDef トークンを列挙します。

phEnumvoid**inout新しい列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
rTypeDefsDWORD*inout取得した TypeDef トークンを格納する配列へのポインタである。
cMaxDWORDinrgTypeDefs 配列の最大サイズ。
pcTypeDefsDWORD*inoutrgTypeDefs に返された TypeDef トークンの数。

戻り値

HRESULT 説明
S_OK EnumTypeDefs は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcTypeDefs は 0 (ゼロ) です。

解説(Remarks)

TypeDef トークンは、クラスやインターフェイスなどの型のほか、拡張メカニズムを通じて追加された任意の型を表します。

vtbl 7 HRESULT EnumInterfaceImpls(void** phEnum, DWORD td, DWORD* rImpls, DWORD cMax, DWORD* pcImpls)

インターフェイスの実装を表す MethodDef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。
tdDWORDinインターフェイスの実装を表す InterfaceImpl トークンを列挙する対象となる TypeDef のトークン。
rImplsDWORD*inoutInterfaceImpl トークンを格納するために使用する配列。
cMaxDWORDinrImpls 配列の最大サイズ。
pcImplsDWORD*inoutrImpls に返されたトークンの実際の数。

戻り値

HRESULT 説明
S_OK EnumInterfaceImpls は正常に終了しました。
S_FALSE 列挙する InterfaceImpl トークンがありません。この場合、pcImpls は 0 (ゼロ) です。
vtbl 8 HRESULT EnumTypeRefs(void** phEnum, DWORD* rTypeRefs, DWORD cMax, DWORD* pcTypeRefs)

現在のメタデータスコープで定義されている TypeRef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
rTypeRefsDWORD*inout取得した TypeRef トークンを格納する配列へのポインタである。
cMaxDWORDinrgTypeRefs 配列の最大サイズ。
pcTypeRefsDWORD*inoutrgTypeRefs に返された TypeRef トークンの数へのポインター。

戻り値

HRESULT 説明
S_OK EnumTypeRefs は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcTypeRefs は 0 (ゼロ) です。
vtbl 9 HRESULT FindTypeDefByName(LPWSTR szTypeDef, DWORD tkEnclosingClass, DWORD* ptd)

指定した名前を持つ型の TypeDef メタデータトークンへのポインターを取得します。

szTypeDefLPWSTRinTypeDef トークンを取得する対象の型の名前。
tkEnclosingClassDWORDin外側のクラスを表す TypeDef または TypeRef トークン。検索する型が入れ子になったクラスでない場合は、この値を NULL に設定します。
ptdDWORD*inout見つかった型の TypeDef トークンを受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 10 HRESULT GetScopeProps(LPWSTR szName, DWORD cchName, DWORD* pchName, GUID* pmvid)

現在のメタデータスコープにあるアセンブリまたはモジュールの名前と、オプションでバージョン識別子を取得します。

szNameLPWSTRoutoptionalアセンブリまたはモジュールの名前を格納するバッファー。
cchNameDWORDinszName のサイズ (ワイド文字数)。
pchNameDWORD*inoutszName に返されたワイド文字の数。
pmvidGUID*inoutアセンブリまたはモジュールのバージョンを一意に識別する GUID へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 11 HRESULT GetModuleFromScope(DWORD* pmd)

現在のメタデータスコープで参照されているモジュールのメタデータトークンを取得します。

pmdDWORD*inout現在のスコープを表す Module トークンを受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 12 HRESULT GetTypeDefProps(DWORD td, LPWSTR szTypeDef, DWORD cchTypeDef, DWORD* pchTypeDef, DWORD* pdwTypeDefFlags, DWORD* ptkExtends)

指定した TypeDef トークンで表される型のメタデータ情報を返します。

tdDWORDin情報を取得する対象の型 (TypeDef) のトークンを指定する。
szTypeDefLPWSTRoutoptional型名を格納するバッファー。
cchTypeDefDWORDinszTypeDef のサイズ (ワイド文字数)。
pchTypeDefDWORD*inoutszTypeDef に返されたワイド文字の数。
pdwTypeDefFlagsDWORD*inout型定義を修飾するフラグへのポインター。この値は CorTypeAttr 列挙体のビットマスクです。
ptkExtendsDWORD*inout要求された型の基本型を表す TypeDef または TypeRef メタデータトークン。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 13 HRESULT GetInterfaceImplProps(DWORD iiImpl, DWORD* pClass, DWORD* ptkIface)

指定したメソッドを実装する型と、そのメソッドを宣言するインターフェイスのメタデータトークンへのポインターを取得します。

iiImplDWORDin情報を取得する対象の InterfaceImpl トークンを指定する。
pClassDWORD*inoutインターフェイスを実装するクラスの TypeDef トークンを受け取る。
ptkIfaceDWORD*inout被実装側を表すメタデータトークン。すなわち、ptkClass によって実装されるインターフェイス。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

InterfaceImpl トークンは、InterfaceImpl テーブルに格納されている、実装する型と実装されるインターフェイスの間の 1 つのマッピングを表します。

vtbl 14 HRESULT GetTypeRefProps(DWORD tr, DWORD* ptkResolutionScope, LPWSTR szName, DWORD cchName, DWORD* pchName)

指定した TypeRef トークンで参照される型に関連付けられたメタデータを取得します。

trDWORDin情報を取得する対象の TypeRef トークンを指定する。
ptkResolutionScopeDWORD*inout参照が行われるスコープへのポインター。この値は AssemblyRef または ModuleRef トークンです。
szNameLPWSTRoutoptional型名を格納するバッファー。
cchNameDWORDinszName の要求サイズ (ワイド文字数)。
pchNameDWORD*inoutszName の返されたサイズ (ワイド文字数)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 15 HRESULT ResolveTypeRef(DWORD tr, GUID* riid, IUnknown** ppIScope, DWORD* ptd)

指定した TypeRef トークンで表される型参照を解決します。

trDWORDin解決する対象の TypeRef トークンを指定する。
riidGUID*inppIScope で返すインターフェイスの IID。通常は IID_IMetaDataImport になります。
ppIScopeIUnknown**out参照先の型が定義されているモジュールスコープへのインターフェイス。
ptdDWORD*inout解決された型の TypeDef トークンを受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

重要 複数のアプリケーションドメインが読み込まれている場合は、このメソッドを使用しないでください。このメソッドはアプリケーションドメインの境界を考慮しません。あるアセンブリの複数のバージョンが読み込まれ、それらが同じ名前空間の同じ型を含んでいる場合、このメソッドは最初に見つかった型のモジュールスコープを返します。
ResolveTypeRef メソッドは、他のモジュール内で型定義を検索します。型定義が見つかった場合、ResolveTypeRef は、そのモジュールスコープへのインターフェイスと、その型の TypeDef トークンを返します。

解決する型参照の解決スコープが AssemblyRef である場合、ResolveTypeRef メソッドは、IMetaDataDispenser::OpenScope メソッドまたは IMetaDataDispenser::OpenScopeOnMemory メソッドの呼び出しによって既に開かれているメタデータスコープ内でのみ一致を検索します。これは、ResolveTypeRef が、AssemblyRef スコープだけからは、そのアセンブリがディスク上またはグローバルアセンブリキャッシュのどこに格納されているかを判別できないためです。

vtbl 16 HRESULT EnumMembers(void** phEnum, DWORD cl, DWORD* rMembers, DWORD cMax, DWORD* pcTokens)

指定した型のメンバーを表す MemberDef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。
clDWORDinメンバーを列挙する対象の型 (TypeDef) のトークンを指定する。
rMembersDWORD*inout取得したメンバートークンを格納する配列へのポインタである。
cMaxDWORDinrgMembers 配列の最大サイズ。
pcTokensDWORD*inoutrgMembers に返された MemberDef トークンの実際の数。

戻り値

HRESULT 説明
S_OK EnumMembers は正常に終了しました。
S_FALSE 列挙する MemberRef トークンがありません。この場合、pcTokens は 0 (ゼロ) です。

解説(Remarks)

クラスのメンバーのコレクションを列挙する場合、EnumMembers はそのクラスに直接定義されているメンバーのみを返します。クラスがそれらの継承されたメンバーの実装を提供している場合でも、クラスが継承するメンバーは返しません。継承されたメンバーを列挙するには、呼び出し側が継承チェーンを明示的にたどる必要があります。継承チェーンの規則は、元のメタデータを出力した言語やコンパイラーによって異なる場合があることに注意してください。

vtbl 17 HRESULT EnumMembersWithName(void** phEnum, DWORD cl, LPWSTR szName, DWORD* rMembers, DWORD cMax, DWORD* pcTokens)

指定した名前を持つ、指定した型のメンバーを表す MemberDef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。
clDWORDinメンバーを列挙する対象の型 (TypeDef) のトークンを指定する。
szNameLPWSTRin列挙子のスコープを制限するメンバー名。
rMembersDWORD*inout取得したメンバートークンを格納する配列へのポインタである。
cMaxDWORDinrgMembers 配列の最大サイズ。
pcTokensDWORD*inoutrgMembers に返された MemberDef トークンの実際の数。

戻り値

HRESULT 説明
S_OK EnumMembersWithName は正常に終了しました。
S_FALSE 列挙する MemberRef トークンがありません。この場合、pcTokens は 0 (ゼロ) です。

解説(Remarks)

このメソッドはフィールドとメソッドを列挙しますが、プロパティやイベントは列挙しません。EnumMembers とは異なり、EnumMembersWithName は指定した名前を持たないすべてのフィールドトークンおよびメンバートークンを破棄します。

vtbl 18 HRESULT EnumMethods(void** phEnum, DWORD cl, DWORD* rMethods, DWORD cMax, DWORD* pcTokens)

指定した型のメソッドを表す MethodDef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
clDWORDinメソッドを列挙する対象の型 (TypeDef) のトークンを指定する。
rMethodsDWORD*inout取得した MethodDef トークンを格納する配列へのポインタである。
cMaxDWORDinMethodDef の rgMethods 配列の最大サイズ。
pcTokensDWORD*inoutrgMethods に返された MethodDef トークンの数。

戻り値

HRESULT 説明
S_OK EnumMethods は正常に終了しました。
S_FALSE 列挙する MethodDef トークンがありません。この場合、pcTokens は 0 (ゼロ) です。
vtbl 19 HRESULT EnumMethodsWithName(void** phEnum, DWORD cl, LPWSTR szName, DWORD* rMethods, DWORD cMax, DWORD* pcTokens)

指定した名前を持ち、指定した TypeDef トークンで参照される型によって定義されているメソッドを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
clDWORDinメソッドを列挙する対象の型 (TypeDef) のトークンを指定する。
szNameLPWSTRin列挙のスコープを制限する名前。
rMethodsDWORD*inout取得した MethodDef トークンを格納する配列へのポインタである。
cMaxDWORDinrgMethods 配列の最大サイズ。
pcTokensDWORD*inoutrgMethods に返された MethodDef トークンの数。

戻り値

HRESULT 説明
S_OK EnumMethodsWithName は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcTokens は 0 (ゼロ) です。

解説(Remarks)

このメソッドはフィールドとメソッドを列挙しますが、プロパティやイベントは列挙しません。EnumMethods とは異なり、EnumMethodsWithName は指定した名前を持たないすべてのメソッドトークンを破棄します。

vtbl 20 HRESULT EnumFields(void** phEnum, DWORD cl, DWORD* rFields, DWORD cMax, DWORD* pcTokens)

指定した TypeDef トークンで参照される型の FieldDef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。
clDWORDinフィールドを列挙する対象の型 (TypeDef) のトークンを指定する。
rFieldsDWORD*inout取得した FieldDef トークンを格納する配列へのポインタである。
cMaxDWORDinrgFields 配列の最大サイズ。
pcTokensDWORD*inoutrgFields に返された FieldDef トークンの実際の数。

戻り値

HRESULT 説明
S_OK EnumFields は正常に終了しました。
S_FALSE 列挙するフィールドがありません。この場合、pcTokens は 0 (ゼロ) です。
vtbl 21 HRESULT EnumFieldsWithName(void** phEnum, DWORD cl, LPWSTR szName, DWORD* rFields, DWORD cMax, DWORD* pcTokens)

指定した名前を持つ、指定した型の FieldDef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。
clDWORDinフィールドを列挙する対象の型 (TypeDef) のトークンを指定する。
szNameLPWSTRin列挙のスコープを制限するフィールド名。
rFieldsDWORD*inoutFieldDef トークンを格納するために使用する配列。
cMaxDWORDinrFields 配列の最大サイズ。
pcTokensDWORD*inoutrFields に返された FieldDef トークンの実際の数。

戻り値

HRESULT 説明
S_OK EnumFieldsWithName は正常に終了しました。
S_FALSE 列挙するフィールドがありません。この場合、pcTokens は 0 (ゼロ) です。

解説(Remarks)

EnumFields とは異なり、EnumFieldsWithName は指定した名前を持たないすべてのフィールドトークンを破棄します。

vtbl 22 HRESULT EnumParams(void** phEnum, DWORD mb, DWORD* rParams, DWORD cMax, DWORD* pcTokens)

指定した MethodDef トークンで参照されるメソッドのパラメーターを表す ParamDef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
mbDWORDinパラメーターを列挙する対象のメソッド (MethodDef) のトークンを指定する。
rParamsDWORD*inoutParamDef トークンを格納するために使用する配列。
cMaxDWORDinrParams 配列の最大サイズ。
pcTokensDWORD*inoutrParams に返された ParamDef トークンの数。

戻り値

HRESULT 説明
S_OK EnumParams は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcTokens は 0 (ゼロ) です。
vtbl 23 HRESULT EnumMemberRefs(void** phEnum, DWORD tkParent, DWORD* rMemberRefs, DWORD cMax, DWORD* pcTokens)

指定した型のメンバーを表す MemberRef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。
tkParentDWORDinメンバーを列挙する対象の型の TypeDef、TypeRef、MethodDef、または ModuleRef トークン。
rMemberRefsDWORD*inout取得した MemberRef トークンを格納する配列へのポインタである。
cMaxDWORDinrgMemberRefs 配列の最大サイズ。
pcTokensDWORD*inoutrgMemberRefs に返された MemberRef トークンの実際の数。

戻り値

HRESULT 説明
S_OK EnumMemberRefs は正常に終了しました。
S_FALSE 列挙する MemberRef トークンがありません。この場合、pcTokens は 0 (ゼロ) です。
vtbl 24 HRESULT EnumMethodImpls(void** phEnum, DWORD td, DWORD* rMethodBody, DWORD* rMethodDecl, DWORD cMax, DWORD* pcTokens)

指定した型のメソッドを表す MethodBody トークンおよび MethodDeclaration トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
tdDWORDinメソッド実装を列挙する対象の型 (TypeDef) のトークンを指定する。
rMethodBodyDWORD*inoutMethodBody トークンを格納する配列。
rMethodDeclDWORD*inoutMethodDeclaration トークンを格納する配列。
cMaxDWORDinrMethodBody 配列および rMethodDecl 配列の最大サイズ。
pcTokensDWORD*inoutrMethodBody および rMethodDecl に返されたメソッドの実際の数。

戻り値

HRESULT 説明
S_OK EnumMethodImpls は正常に終了しました。
S_FALSE 列挙するメソッドトークンがありません。この場合、pcTokens は 0 (ゼロ) です。
vtbl 25 HRESULT EnumPermissionSets(void** phEnum, DWORD tk, DWORD dwActions, DWORD* rPermission, DWORD cMax, DWORD* pcTokens)

指定したメタデータスコープ内のオブジェクトのアクセス許可を列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
tkDWORDin検索のスコープを制限するメタデータトークン。可能な限り広いスコープを検索する場合は NULL。
dwActionsDWORDinrPermission に含める SecurityAction 値を表すフラグ。すべてのアクションを返す場合は 0。
rPermissionDWORD*inoutPermission トークンを格納するために使用する配列。
cMaxDWORDinrPermission 配列の最大サイズ。
pcTokensDWORD*inoutrPermission に返された Permission トークンの数。

戻り値

HRESULT 説明
S_OK EnumPermissionSets は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcTokens は 0 (ゼロ) です。
vtbl 26 HRESULT FindMember(DWORD td, LPWSTR szName, BYTE* pvSigBlob, DWORD cbSigBlob, DWORD* pmb)
tdDWORDinメンバーを検索する対象の型 (TypeDef) のトークンを指定する。
szNameLPWSTRin検索するメンバーの名前を指定する文字列である。
pvSigBlobBYTE*inoutメンバーのシグネチャを表す blob へのポインタである。
cbSigBlobDWORDinシグネチャ blob のサイズをバイト数で指定する。
pmbDWORD*inout見つかったメンバーのトークンを受け取る。
vtbl 27 HRESULT FindMethod(DWORD td, LPWSTR szName, BYTE* pvSigBlob, DWORD cbSigBlob, DWORD* pmb)
tdDWORDinメソッドを検索する対象の型 (TypeDef) のトークンを指定する。
szNameLPWSTRin検索するメソッドの名前を指定する文字列である。
pvSigBlobBYTE*inoutメソッドのシグネチャを表す blob へのポインタである。
cbSigBlobDWORDinシグネチャ blob のサイズをバイト数で指定する。
pmbDWORD*inout見つかったメソッドの MethodDef トークンを受け取る。
vtbl 28 HRESULT FindField(DWORD td, LPWSTR szName, BYTE* pvSigBlob, DWORD cbSigBlob, DWORD* pmb)
tdDWORDinフィールドを検索する対象の型 (TypeDef) のトークンを指定する。
szNameLPWSTRin検索するフィールドの名前を指定する文字列である。
pvSigBlobBYTE*inoutフィールドのシグネチャを表す blob へのポインタである。
cbSigBlobDWORDinシグネチャ blob のサイズをバイト数で指定する。
pmbDWORD*inout見つかったフィールドの FieldDef トークンを受け取る。
vtbl 29 HRESULT FindMemberRef(DWORD td, LPWSTR szName, BYTE* pvSigBlob, DWORD cbSigBlob, DWORD* pmr)

指定した型に含まれ、指定した名前とメタデータシグネチャを持つメンバー参照の MemberRef トークンへのポインターを取得します。

tdDWORDinメンバー参照を検索する対象の型または親のトークンを指定する。
szNameLPWSTRin検索するメンバー参照の名前。
pvSigBlobBYTE*inoutメンバー参照のバイナリメタデータシグネチャへのポインター。
cbSigBlobDWORDinpvSigBlob のサイズ (バイト単位)。
pmrDWORD*inout見つかった MemberRef トークンを受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

メンバーは、それを含むクラスまたはインターフェイス (tkTypeRef)、その名前 (szName)、およびオプションでそのシグネチャ (pvSigBlob) を使用して指定します。

シグネチャは特定のスコープに束縛されるため、FindMemberRef に渡すシグネチャは現在のスコープ内で生成されたものである必要があります。シグネチャには、外側のクラスまたは値型を識別するトークンを埋め込むことができます。このトークンはローカルの TypeDef テーブルへのインデックスです。現在のスコープのコンテキスト外でランタイムシグネチャを構築し、そのシグネチャを FindMemberRef の入力として使用することはできません。

FindMemberRef は、クラスまたはインターフェイスに直接定義されたメンバー参照のみを検出します。継承されたメンバー参照は検出しません。

vtbl 30 HRESULT GetMethodProps(DWORD mb, DWORD* pClass, LPWSTR szMethod, DWORD cchMethod, DWORD* pchMethod, DWORD* pdwAttr, BYTE** ppvSigBlob, DWORD* pcbSigBlob, DWORD* pulCodeRVA, DWORD* pdwImplFlags)

指定した MethodDef トークンで参照されるメソッドに関連付けられたメタデータを取得します。

mbDWORDin情報を取得する対象のメソッド (MethodDef) のトークンを指定する。
pClassDWORD*inoutメソッドを所有する型の TypeDef トークンを受け取る。
szMethodLPWSTRoutoptionalメソッド名を格納するバッファーへのポインター。
cchMethodDWORDinszMethod の要求サイズ。
pchMethodDWORD*inoutszMethod のサイズ (ワイド文字数) へのポインター。切り詰めが発生した場合は、メソッド名の実際のワイド文字数。
pdwAttrDWORD*inoutメソッドに関連付けられたフラグへのポインター。
ppvSigBlobBYTE**inoutメソッドのバイナリメタデータシグネチャへのポインター。
pcbSigBlobDWORD*inoutppvSigBlob のサイズ (バイト単位) へのポインター。
pulCodeRVADWORD*inoutメソッドの相対仮想アドレスへのポインター。
pdwImplFlagsDWORD*inoutメソッドの実装フラグへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 31 HRESULT GetMemberRefProps(DWORD mr, DWORD* ptk, LPWSTR szMember, DWORD cchMember, DWORD* pchMember, BYTE** ppvSigBlob, DWORD* pbSig)

指定したトークンで参照されるメンバーに関連付けられたメタデータを取得します。

mrDWORDin情報を取得する対象の MemberRef トークンを指定する。
ptkDWORD*inoutメンバーを宣言するクラスを表す TypeDef、TypeRef、または TypeSpec トークン、メンバーを宣言するモジュールクラスを表す ModuleRef トークン、またはメンバーを表す MethodDef。
szMemberLPWSTRoutoptionalメンバー名を格納する文字列バッファー。
cchMemberDWORDinszMember の要求サイズ (ワイド文字数)。
pchMemberDWORD*inoutszMember の返されたサイズ (ワイド文字数)。
ppvSigBlobBYTE**inoutメンバーのバイナリメタデータシグネチャへのポインター。
pbSigDWORD*inoutシグネチャ blob のサイズをバイト数で受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 32 HRESULT EnumProperties(void** phEnum, DWORD td, DWORD* rProperties, DWORD cMax, DWORD* pcProperties)

指定した TypeDef トークンで参照される型のプロパティを表す PropertyDef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
tdDWORDinプロパティを列挙する対象の型 (TypeDef) のトークンを指定する。
rPropertiesDWORD*inout取得した Property トークンを格納する配列へのポインタである。
cMaxDWORDinrgProperties 配列の最大サイズ。
pcPropertiesDWORD*inoutrgProperties に返された PropertyDef トークンの数。

戻り値

HRESULT 説明
S_OK EnumProperties は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcProperties は 0 (ゼロ) です。
vtbl 33 HRESULT EnumEvents(void** phEnum, DWORD td, DWORD* rEvents, DWORD cMax, DWORD* pcEvents)

指定した TypeDef トークンのイベント定義トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。
tdDWORDinイベントを列挙する対象の型 (TypeDef) のトークンを指定する。
rEventsDWORD*inout取得した Event トークンを格納する配列へのポインタである。
cMaxDWORDinrgEvents 配列の最大サイズ。
pcEventsDWORD*inoutrgEvents に返されたイベントの実際の数。

戻り値

HRESULT 説明
S_OK EnumEvents は正常に終了しました。
S_FALSE 列挙するイベントがありません。この場合、pcEvents はゼロです。
vtbl 34 HRESULT GetEventProps(DWORD ev, DWORD* pClass, LPWSTR szEvent, DWORD cchEvent, DWORD* pchEvent, DWORD* pdwEventFlags, DWORD* ptkEventType, DWORD* pmdAddOn, DWORD* pmdRemoveOn, DWORD* pmdFire, DWORD* rmdOtherMethod, DWORD cMax, DWORD* pcOtherMethod)
evDWORDin情報を取得する対象のイベント (Event) のトークンを指定する。
pClassDWORD*inoutイベントを所有する型の TypeDef トークンを受け取る。
szEventLPWSTRinイベント名を受け取るバッファへのポインタである。
cchEventDWORDinイベント名用バッファの最大文字数を指定する。
pchEventDWORD*inout実際に書き込まれたイベント名の文字数を受け取る。
pdwEventFlagsDWORD*inoutイベントの属性フラグを受け取る。
ptkEventTypeDWORD*inoutイベントのデリゲート型を示すトークンを受け取る。
pmdAddOnDWORD*inoutイベントの追加 (add) アクセサーメソッドのトークンを受け取る。
pmdRemoveOnDWORD*inoutイベントの削除 (remove) アクセサーメソッドのトークンを受け取る。
pmdFireDWORD*inoutイベントの発火 (fire) メソッドのトークンを受け取る。
rmdOtherMethodDWORD*inoutイベントに関連するその他のメソッドのトークンを格納する配列へのポインタである。
cMaxDWORDinその他メソッド配列に格納できる最大要素数を指定する。
pcOtherMethodDWORD*inout実際に取得したその他メソッドの数を受け取る。
vtbl 35 HRESULT EnumMethodSemantics(void** phEnum, DWORD mb, DWORD* rEventProp, DWORD cMax, DWORD* pcEventProp)

指定したメソッドが関連付けられているプロパティおよびプロパティ変更イベントを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
mbDWORDinメソッドセマンティクスを列挙する対象のメソッド (MethodDef) のトークンを指定する。
rEventPropDWORD*inout関連付けられたイベントまたはプロパティのトークンを格納する配列へのポインタである。
cMaxDWORDinrgEventProp 配列の最大サイズ。
pcEventPropDWORD*inoutrgEventProp に返されたイベントまたはプロパティの数。

戻り値

HRESULT 説明
S_OK EnumMethodSemantics は正常に終了しました。
S_FALSE 列挙するイベントまたはプロパティがありません。この場合、pcEventProp は 0 (ゼロ) です。
vtbl 36 HRESULT GetMethodSemantics(DWORD mb, DWORD tkEventProp, DWORD* pdwSemanticsFlags)

指定した MethodDef トークンで参照されるメソッドと、指定した EventProp トークンで参照される対になったプロパティおよびイベントとの関係を示すフラグを取得します。

mbDWORDin情報を取得する対象のメソッド (MethodDef) のトークンを指定する。
tkEventPropDWORDinメソッドの役割を取得する対象の、対になったプロパティおよびイベントを表すトークン。
pdwSemanticsFlagsDWORD*inout関連付けられたセマンティクスフラグへのポインター。この値は CorMethodSemanticsAttr 列挙体のビットマスクです。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 37 HRESULT GetClassLayout(DWORD td, DWORD* pdwPackSize, COR_FIELD_OFFSET* rFieldOffset, DWORD cMax, DWORD* pcFieldOffset, DWORD* pulClassSize)
tdDWORDin情報を取得する対象の型 (TypeDef) のトークンを指定する。
pdwPackSizeDWORD*inoutフィールドのパッキングサイズ (アラインメント) を受け取る。
rFieldOffsetCOR_FIELD_OFFSET*inout各フィールドのオフセットを示す COR_FIELD_OFFSET 配列へのポインタである。
cMaxDWORDinオフセット配列に格納できる最大要素数を指定する。
pcFieldOffsetDWORD*inout実際に取得したフィールドオフセットの数を受け取る。
pulClassSizeDWORD*inoutクラス全体のサイズをバイト数で受け取る。
vtbl 38 HRESULT GetFieldMarshal(DWORD tk, BYTE** ppvNativeType, DWORD* pcbNativeType)

指定したフィールドメタデータトークンで表されるフィールドのネイティブなアンマネージ型へのポインターを取得します。

tkDWORDin相互運用マーシャリング情報を取得する対象のフィールドを表すメタデータトークン。
ppvNativeTypeBYTE**inoutフィールドのネイティブ型のメタデータシグネチャへのポインター。
pcbNativeTypeDWORD*inoutppvNativeType のサイズ (バイト単位)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 39 HRESULT GetRVA(DWORD tk, DWORD* pulCodeRVA, DWORD* pdwImplFlags)

指定したトークンで表されるメソッドまたはフィールドの相対仮想アドレス (RVA) と実装フラグを取得します。

tkDWORDinRVA を返す対象のコードオブジェクトを表す MethodDef または FieldDef メタデータトークン。トークンが FieldDef の場合、フィールドはグローバル変数である必要があります。
pulCodeRVADWORD*inoutトークンで表されるコードオブジェクトの相対仮想アドレスへのポインター。
pdwImplFlagsDWORD*inoutメソッドの実装フラグへのポインター。この値は CorMethodImpl 列挙体のビットマスクです。pdwImplFlags の値は、tk が MethodDef トークンである場合にのみ有効です。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 40 HRESULT GetPermissionSetProps(DWORD pm, DWORD* pdwAction, void** ppvPermission, DWORD* pcbPermission)

指定した Permission トークンで表される System.Security.PermissionSet に関連付けられたメタデータを取得します。

pmDWORDin情報を取得する対象のアクセス許可セット (Permission) のトークンを指定する。
pdwActionDWORD*inoutアクセス許可セットへのポインター。
ppvPermissionvoid**inアクセス許可セットのバイナリメタデータシグネチャへのポインター。
pcbPermissionDWORD*inoutconst のサイズ (バイト単位)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 41 HRESULT GetSigFromToken(DWORD mdSig, BYTE** ppvSig, DWORD* pcbSig)

指定したトークンに関連付けられたバイナリメタデータシグネチャを取得します。

mdSigDWORDinシグネチャを取得する対象の StandAloneSig トークンを指定する。
ppvSigBYTE**inout返されたメタデータシグネチャへのポインター。
pcbSigDWORD*inoutバイナリメタデータシグネチャのサイズ (バイト単位)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 42 HRESULT GetModuleRefProps(DWORD mur, LPWSTR szName, DWORD cchName, DWORD* pchName)

指定したメタデータトークンで参照されるモジュールの名前を取得します。

murDWORDin情報を取得する対象の ModuleRef トークンを指定する。
szNameLPWSTRoutoptionalモジュール名を格納するバッファー。
cchNameDWORDinszName の要求サイズ (ワイド文字数)。
pchNameDWORD*inoutszName の返されたサイズ (ワイド文字数)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 43 HRESULT EnumModuleRefs(void** phEnum, DWORD* rModuleRefs, DWORD cmax, DWORD* pcModuleRefs)

インポートされたモジュールを表す ModuleRef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
rModuleRefsDWORD*inout取得した ModuleRef トークンを格納する配列へのポインタである。
cmaxDWORDin配列に格納できる最大要素数を指定する。
pcModuleRefsDWORD*inoutrgModuleRefs に返された ModuleRef トークンの数。

戻り値

HRESULT 説明
S_OK EnumModuleRefs は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcModuleRefs は 0 (ゼロ) です。
vtbl 44 HRESULT GetTypeSpecFromToken(DWORD typespec, BYTE** ppvSig, DWORD* pcbSig)

指定したトークンで表される型指定のバイナリメタデータシグネチャを取得します。

typespecDWORDinシグネチャを取得する対象の TypeSpec トークンを指定する。
ppvSigBYTE**inoutバイナリメタデータシグネチャへのポインター。
pcbSigDWORD*inoutメタデータシグネチャのサイズ (バイト単位)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 45 HRESULT GetNameFromToken(DWORD tk, CHAR** pszUtf8NamePtr)

指定したメタデータトークンで参照されるオブジェクトの UTF-8 名を取得します。このメソッドは非推奨です。

tkDWORDin名前を返す対象のオブジェクトを表すトークン。
pszUtf8NamePtrCHAR**inoutヒープ内の UTF-8 オブジェクト名へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

GetNameFromToken は非推奨です。代わりに、必要な特定の種類のトークンのプロパティを取得するメソッド、たとえばフィールドの場合は GetFieldProps、メソッドの場合は GetMethodProps を呼び出してください。

vtbl 46 HRESULT EnumUnresolvedMethods(void** phEnum, DWORD* rMethods, DWORD cMax, DWORD* pcTokens)

現在のメタデータスコープ内の未解決のメソッドを表す MemberDef トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
rMethodsDWORD*inout取得した未解決メソッドのトークンを格納する配列へのポインタである。
cMaxDWORDinrgMethods 配列の最大サイズ。
pcTokensDWORD*inoutrgMethods に返された MemberDef トークンの数。

戻り値

HRESULT 説明
S_OK EnumUnresolvedMethods は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcTokens は 0 (ゼロ) です。

解説(Remarks)

未解決のメソッドとは、宣言されているが実装されていないメソッドのことです。メソッドが miForwardRef でマークされ、かつ mdPinvokeImpl または miRuntime のいずれかがゼロに設定されている場合、そのメソッドは列挙に含まれます。言い換えると、未解決のメソッドとは、miForwardRef でマークされているものの、(PInvoke 経由で到達する) アンマネージコードでも実装されておらず、ランタイム自体によって内部的にも実装されていないクラスメソッドです。

この列挙は、モジュールスコープ (グローバル) で定義されているメソッド、またはインターフェイスや抽象クラスで定義されているメソッドをすべて除外します。

vtbl 47 HRESULT GetUserString(DWORD stk, LPWSTR szString, DWORD cchString, DWORD* pchString)

指定したメタデータトークンで表されるリテラル文字列を取得します。

stkDWORDin取得する対象のユーザー文字列 (String) のトークンを指定する。
szStringLPWSTRoutoptional要求された文字列のコピー。
cchStringDWORDin要求された szString の最大サイズ (ワイド文字数)。
pchStringDWORD*inout返された szString のサイズ (ワイド文字数)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 48 HRESULT GetPinvokeMap(DWORD tk, DWORD* pdwMappingFlags, LPWSTR szImportName, DWORD cchImportName, DWORD* pchImportName, DWORD* pmrImportDLL)

PInvoke 呼び出しのターゲットアセンブリを表す ModuleRef トークンを取得します。

tkDWORDinPInvoke マッピングメタデータを取得する対象の FieldDef または MethodDef トークン。
pdwMappingFlagsDWORD*inoutマッピングに使用されるフラグへのポインター。この値は CorPinvokeMap 列挙体のビットマスクです。
szImportNameLPWSTRoutoptionalアンマネージのターゲット DLL の名前。
cchImportNameDWORDinszImportName のサイズ (ワイド文字数)。
pchImportNameDWORD*inoutszImportName に返されたワイド文字の数。
pmrImportDLLDWORD*inout対象 DLL を示す ModuleRef トークンを受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 49 HRESULT EnumSignatures(void** phEnum, DWORD* rSignatures, DWORD cmax, DWORD* pcSignatures)

現在のスコープ内のスタンドアロンシグネチャを表す Signature トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
rSignaturesDWORD*inout取得した StandAloneSig トークンを格納する配列へのポインタである。
cmaxDWORDin配列に格納できる最大要素数を指定する。
pcSignaturesDWORD*inoutrgSignatures に返された Signature トークンの数。

戻り値

HRESULT 説明
S_OK EnumSignatures は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcSignatures は 0 (ゼロ) です。
vtbl 50 HRESULT EnumTypeSpecs(void** phEnum, DWORD* rTypeSpecs, DWORD cmax, DWORD* pcTypeSpecs)

現在のメタデータスコープで定義されている TypeSpec トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは、この値を NULL にする必要があります。
rTypeSpecsDWORD*inout取得した TypeSpec トークンを格納する配列へのポインタである。
cmaxDWORDin配列に格納できる最大要素数を指定する。
pcTypeSpecsDWORD*inoutrgTypeSpecs に返された TypeSpec トークンの数。

戻り値

HRESULT 説明
S_OK EnumTypeSpecs は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcTypeSpecs は 0 (ゼロ) です。
vtbl 51 HRESULT EnumUserStrings(void** phEnum, DWORD* rStrings, DWORD cmax, DWORD* pcStrings)

現在のメタデータスコープ内のハードコードされた文字列を表す String トークンを列挙します。

phEnumvoid**inout列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。
rStringsDWORD*inout取得したユーザー文字列 (String) トークンを格納する配列へのポインタである。
cmaxDWORDin配列に格納できる最大要素数を指定する。
pcStringsDWORD*inoutrgStrings に返された String トークンの数。

戻り値

HRESULT 説明
S_OK EnumUserStrings は正常に終了しました。
S_FALSE 列挙するトークンがありません。この場合、pcStrings は 0 (ゼロ) です。
vtbl 52 HRESULT GetParamForMethodIndex(DWORD md, DWORD ulParamSeq, DWORD* ppd)

指定した MethodDef トークンで表されるメソッドの、指定したパラメーターを表すトークンを取得します。

mdDWORDin対象のメソッド (MethodDef) のトークンを指定する。
ulParamSeqDWORDin要求されたパラメーターが現れる、パラメーターリスト内の序数位置。パラメーターは 1 から始まる番号が付けられ、メソッドの戻り値は位置 0 になります。
ppdDWORD*inout対応する Param トークンを受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 53 HRESULT EnumCustomAttributes(void** phEnum, DWORD tk, DWORD tkType, DWORD* rCustomAttributes, DWORD cMax, DWORD* pcCustomAttributes)

指定した型またはメンバーに関連付けられたカスタム属性定義トークンを列挙します。

phEnumvoid**inout返された列挙子へのポインター。
tkDWORDin列挙のスコープを表すトークン。すべてのカスタム属性を対象とする場合は 0。
tkTypeDWORDin列挙する属性の型を表すトークン。すべての型を対象とする場合は 0。
rCustomAttributesDWORD*inout取得した CustomAttribute トークンを格納する配列へのポインタである。
cMaxDWORDinrgCustomAttributes 配列の最大サイズ。
pcCustomAttributesDWORD*inoutrgCustomAttributes に返されたトークン値の実際の数。

戻り値

HRESULT 説明
S_OK EnumCustomAttributes は正常に終了しました。
S_FALSE 列挙するカスタム属性がありません。この場合、pcCustomAttributes は 0 (ゼロ) です。
vtbl 54 HRESULT GetCustomAttributeProps(DWORD cv, DWORD* ptkObj, DWORD* ptkType, void** ppBlob, DWORD* pcbSize)

メタデータトークンを指定して、カスタム属性の値を取得します。

cvDWORDin取得するカスタム属性を表すメタデータトークン。
ptkObjDWORD*inoutカスタム属性が修飾するオブジェクトを表すメタデータトークン。この値は、mdCustomAttribute を除く任意の種類のメタデータトークンにできます。トークンの種類の詳細については、メタデータトークンを参照してください。
ptkTypeDWORD*inout返されるカスタム属性の型を表す mdMethodDef または mdMemberRef メタデータトークン。
ppBlobvoid**inカスタム属性の値であるデータの配列へのポインター。
pcbSizeDWORD*inoutカスタム属性 blob のサイズをバイト数で受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

カスタム属性はデータの配列として格納されており、その形式はメタデータエンジンによって解釈されます。

vtbl 55 HRESULT FindTypeRef(DWORD tkResolutionScope, LPWSTR szName, DWORD* ptr)

指定したスコープ内にあり、指定した名前を持つ型参照の TypeRef トークンへのポインターを取得します。

tkResolutionScopeDWORDin型参照が定義されているモジュール、アセンブリ、または型をそれぞれ指定する ModuleRef、AssemblyRef、または TypeRef トークン。
szNameLPWSTRin検索する型参照の名前。
ptrDWORD*inout見つかった TypeRef トークンを受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 56 HRESULT GetMemberProps(DWORD mb, DWORD* pClass, LPWSTR szMember, DWORD cchMember, DWORD* pchMember, DWORD* pdwAttr, BYTE** ppvSigBlob, DWORD* pcbSigBlob, DWORD* pulCodeRVA, DWORD* pdwImplFlags, DWORD* pdwCPlusTypeFlag, void** ppValue, DWORD* pcchValue)

指定したメタデータトークンで参照される型メンバーの、名前、バイナリシグネチャ、相対仮想アドレスを含むメタデータ情報を取得します。

mbDWORDin情報を取得する対象のメンバートークンを指定する。
pClassDWORD*inoutメンバーを所有する型の TypeDef トークンを受け取る。
szMemberLPWSTRoutoptionalメンバーの名前。
cchMemberDWORDinszMember バッファーのサイズ (ワイド文字数)。
pchMemberDWORD*inout返された名前のサイズ (ワイド文字数)。
pdwAttrDWORD*inoutメンバーに適用されたフラグ値。
ppvSigBlobBYTE**inoutメンバーのバイナリメタデータシグネチャへのポインター。
pcbSigBlobDWORD*inoutppvSigBlob のサイズ (バイト単位)。
pulCodeRVADWORD*inoutメンバーの相対仮想アドレスへのポインター。
pdwImplFlagsDWORD*inoutメンバーに関連付けられたメソッド実装フラグ。
pdwCPlusTypeFlagDWORD*inoutValueType をマークするフラグ。
ppValuevoid**inoutこのメンバーが返す定数文字列値。
pcchValueDWORD*inoutppValue のサイズ (文字数)。ppValue が文字列を保持していない場合は 0。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 57 HRESULT GetFieldProps(DWORD mb, DWORD* pClass, LPWSTR szField, DWORD cchField, DWORD* pchField, DWORD* pdwAttr, BYTE** ppvSigBlob, DWORD* pcbSigBlob, DWORD* pdwCPlusTypeFlag, void** ppValue, DWORD* pcchValue)

指定した FieldDef トークンで参照されるフィールドに関連付けられたメタデータを取得します。

mbDWORDin情報を取得する対象のフィールド (FieldDef) のトークンを指定する。
pClassDWORD*inoutフィールドを所有する型の TypeDef トークンを受け取る。
szFieldLPWSTRoutoptionalフィールドの名前。
cchFieldDWORDinszField 用のバッファーのサイズ (ワイド文字数)。
pchFieldDWORD*inout返されたバッファーの実際のサイズ。
pdwAttrDWORD*inoutフィールドのメタデータに関連付けられたフラグ。
ppvSigBlobBYTE**inoutフィールドを記述するバイナリメタデータ値へのポインター。
pcbSigBlobDWORD*inoutppvSigBlob のサイズ (バイト単位)。
pdwCPlusTypeFlagDWORD*inoutフィールドの値型を指定するフラグ。
ppValuevoid**inoutフィールドの定数値。
pcchValueDWORD*inoutppValue のサイズ (文字数)。文字列が存在しない場合は 0。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 58 HRESULT GetPropertyProps(DWORD prop, DWORD* pClass, LPWSTR szProperty, DWORD cchProperty, DWORD* pchProperty, DWORD* pdwPropFlags, BYTE** ppvSig, DWORD* pbSig, DWORD* pdwCPlusTypeFlag, void** ppDefaultValue, DWORD* pcchDefaultValue, DWORD* pmdSetter, DWORD* pmdGetter, DWORD* rmdOtherMethod, DWORD cMax, DWORD* pcOtherMethod)
propDWORDin情報を取得する対象のプロパティ (Property) のトークンを指定する。
pClassDWORD*inoutプロパティを所有する型の TypeDef トークンを受け取る。
szPropertyLPWSTRinプロパティ名を受け取るバッファへのポインタである。
cchPropertyDWORDinプロパティ名用バッファの最大文字数を指定する。
pchPropertyDWORD*inout実際に書き込まれたプロパティ名の文字数を受け取る。
pdwPropFlagsDWORD*inoutプロパティの属性フラグを受け取る。
ppvSigBYTE**inoutプロパティのシグネチャ blob へのポインタを受け取る。
pbSigDWORD*inoutシグネチャ blob のサイズをバイト数で受け取る。
pdwCPlusTypeFlagDWORD*inout既定値の要素型を示す ELEMENT_TYPE 値を受け取る。
ppDefaultValuevoid**inoutプロパティの既定値へのポインタを受け取る。
pcchDefaultValueDWORD*inout既定値が文字列の場合の文字数を受け取る。
pmdSetterDWORD*inoutプロパティの設定 (set) アクセサーメソッドのトークンを受け取る。
pmdGetterDWORD*inoutプロパティの取得 (get) アクセサーメソッドのトークンを受け取る。
rmdOtherMethodDWORD*inoutプロパティに関連するその他のメソッドのトークンを格納する配列へのポインタである。
cMaxDWORDinその他メソッド配列に格納できる最大要素数を指定する。
pcOtherMethodDWORD*inout実際に取得したその他メソッドの数を受け取る。
vtbl 59 HRESULT GetParamProps(DWORD tk, DWORD* pmd, DWORD* pulSequence, LPWSTR szName, DWORD cchName, DWORD* pchName, DWORD* pdwAttr, DWORD* pdwCPlusTypeFlag, void** ppValue, DWORD* pcchValue)

指定した ParamDef トークンで参照されるパラメーターのメタデータ値を取得します。

tkDWORDin情報を取得する対象のパラメーター (Param) のトークンを指定する。
pmdDWORD*inoutパラメーターを所有するメソッドの MethodDef トークンを受け取る。
pulSequenceDWORD*inoutメソッド引数リスト内でのパラメーターの序数位置。
szNameLPWSTRoutoptionalパラメーターの名前を格納するバッファー。
cchNameDWORDinszName の要求サイズ (ワイド文字数)。
pchNameDWORD*inoutszName の返されたサイズ (ワイド文字数)。
pdwAttrDWORD*inoutパラメーターに関連付けられた属性フラグへのポインター。
pdwCPlusTypeFlagDWORD*inoutパラメーターが ValueType であることを指定するフラグへのポインター。
ppValuevoid**inoutパラメーターが返す定数文字列へのポインター。
pcchValueDWORD*inoutppValue のサイズ (ワイド文字数)。ppValue が文字列を保持していない場合は 0。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 60 HRESULT GetCustomAttributeByName(DWORD tkObj, LPWSTR szName, void** ppData, DWORD* pcbData)

名前と所有者を指定して、カスタム属性を取得します。

tkObjDWORDinカスタム属性を所有するオブジェクトを表すメタデータトークン。
szNameLPWSTRinカスタム属性の名前。
ppDatavoid**inカスタム属性の値であるデータの配列へのポインター。
pcbDataDWORD*inoutconst に返されたデータのサイズ (バイト単位)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

同じ所有者に対して複数のカスタム属性を定義することは正当であり、それらが同じ名前を持つ場合さえあります。ただし、GetCustomAttributeByName は 1 つのインスタンスのみを返します (GetCustomAttributeByName は最初に見つかったインスタンスを返します)。カスタム属性のすべてのインスタンスを見つけるには、EnumCustomAttributes メソッドを呼び出してください。

vtbl 61 BOOL IsValidToken(DWORD tk)

指定したトークンがコードオブジェクトへの有効な参照を保持しているかどうかを示す値を取得します。

tkDWORDin参照の有効性を確認する対象のトークン。

戻り値

tk が現在のスコープ内で有効なメタデータトークンである場合は true。それ以外の場合は false

vtbl 62 HRESULT GetNestedClassProps(DWORD tdNestedClass, DWORD* ptdEnclosingClass)

指定した入れ子になった型の親型の TypeDef トークンを取得します。

tdNestedClassDWORDin親クラスのトークンを返す対象の型を表す TypeDef トークン。
ptdEnclosingClassDWORD*inouttdNestedClass が入れ子になっている型の TypeDef トークンへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 63 HRESULT GetNativeCallConvFromSig(void* pvSig, DWORD cbSig, DWORD* pCallConv)

指定したシグネチャポインターで表されるメソッドのネイティブ呼び出し規約を取得します。

pvSigvoid*in呼び出し規約を返す対象のメソッドのメタデータシグネチャへのポインター。
cbSigDWORDinconst のサイズ (バイト単位)。
pCallConvDWORD*inoutネイティブ呼び出し規約へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 64 HRESULT IsGlobal(DWORD pd, INT* pbGlobal)

指定したメタデータトークンで表されるフィールド、メソッド、または型がグローバルスコープを持つかどうかを示す値を取得します。

pdDWORDin判定する対象のメンバーまたはフィールドのトークンを指定する。
pbGlobalINT*inout対象がグローバル (モジュールレベル) かどうかを示す値を受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IMetaDataImport "{7DAC8207-D3AE-4C75-9B67-92801A497D44}"
#usecom global IMetaDataImport IID_IMetaDataImport "{}"
#comfunc global IMetaDataImport_CloseEnum                 3 sptr
#comfunc global IMetaDataImport_CountEnum                 4 sptr,var
#comfunc global IMetaDataImport_ResetEnum                 5 sptr,int
#comfunc global IMetaDataImport_EnumTypeDefs              6 sptr,var,int,var
#comfunc global IMetaDataImport_EnumInterfaceImpls        7 sptr,int,var,int,var
#comfunc global IMetaDataImport_EnumTypeRefs              8 sptr,var,int,var
#comfunc global IMetaDataImport_FindTypeDefByName         9 wstr,int,var
#comfunc global IMetaDataImport_GetScopeProps             10 var,int,var,var
#comfunc global IMetaDataImport_GetModuleFromScope        11 var
#comfunc global IMetaDataImport_GetTypeDefProps           12 int,var,int,var,var,var
#comfunc global IMetaDataImport_GetInterfaceImplProps     13 int,var,var
#comfunc global IMetaDataImport_GetTypeRefProps           14 int,var,var,int,var
#comfunc global IMetaDataImport_ResolveTypeRef            15 int,var,sptr,var
#comfunc global IMetaDataImport_EnumMembers               16 sptr,int,var,int,var
#comfunc global IMetaDataImport_EnumMembersWithName       17 sptr,int,wstr,var,int,var
#comfunc global IMetaDataImport_EnumMethods               18 sptr,int,var,int,var
#comfunc global IMetaDataImport_EnumMethodsWithName       19 sptr,int,wstr,var,int,var
#comfunc global IMetaDataImport_EnumFields                20 sptr,int,var,int,var
#comfunc global IMetaDataImport_EnumFieldsWithName        21 sptr,int,wstr,var,int,var
#comfunc global IMetaDataImport_EnumParams                22 sptr,int,var,int,var
#comfunc global IMetaDataImport_EnumMemberRefs            23 sptr,int,var,int,var
#comfunc global IMetaDataImport_EnumMethodImpls           24 sptr,int,var,var,int,var
#comfunc global IMetaDataImport_EnumPermissionSets        25 sptr,int,int,var,int,var
#comfunc global IMetaDataImport_FindMember                26 int,wstr,var,int,var
#comfunc global IMetaDataImport_FindMethod                27 int,wstr,var,int,var
#comfunc global IMetaDataImport_FindField                 28 int,wstr,var,int,var
#comfunc global IMetaDataImport_FindMemberRef             29 int,wstr,var,int,var
#comfunc global IMetaDataImport_GetMethodProps            30 int,var,var,int,var,var,var,var,var,var
#comfunc global IMetaDataImport_GetMemberRefProps         31 int,var,var,int,var,var,var
#comfunc global IMetaDataImport_EnumProperties            32 sptr,int,var,int,var
#comfunc global IMetaDataImport_EnumEvents                33 sptr,int,var,int,var
#comfunc global IMetaDataImport_GetEventProps             34 int,var,wstr,int,var,var,var,var,var,var,var,int,var
#comfunc global IMetaDataImport_EnumMethodSemantics       35 sptr,int,var,int,var
#comfunc global IMetaDataImport_GetMethodSemantics        36 int,int,var
#comfunc global IMetaDataImport_GetClassLayout            37 int,var,var,int,var,var
#comfunc global IMetaDataImport_GetFieldMarshal           38 int,var,var
#comfunc global IMetaDataImport_GetRVA                    39 int,var,var
#comfunc global IMetaDataImport_GetPermissionSetProps     40 int,var,sptr,var
#comfunc global IMetaDataImport_GetSigFromToken           41 int,var,var
#comfunc global IMetaDataImport_GetModuleRefProps         42 int,var,int,var
#comfunc global IMetaDataImport_EnumModuleRefs            43 sptr,var,int,var
#comfunc global IMetaDataImport_GetTypeSpecFromToken      44 int,var,var
#comfunc global IMetaDataImport_GetNameFromToken          45 int,var
#comfunc global IMetaDataImport_EnumUnresolvedMethods     46 sptr,var,int,var
#comfunc global IMetaDataImport_GetUserString             47 int,var,int,var
#comfunc global IMetaDataImport_GetPinvokeMap             48 int,var,var,int,var,var
#comfunc global IMetaDataImport_EnumSignatures            49 sptr,var,int,var
#comfunc global IMetaDataImport_EnumTypeSpecs             50 sptr,var,int,var
#comfunc global IMetaDataImport_EnumUserStrings           51 sptr,var,int,var
#comfunc global IMetaDataImport_GetParamForMethodIndex    52 int,int,var
#comfunc global IMetaDataImport_EnumCustomAttributes      53 sptr,int,int,var,int,var
#comfunc global IMetaDataImport_GetCustomAttributeProps   54 int,var,var,sptr,var
#comfunc global IMetaDataImport_FindTypeRef               55 int,wstr,var
#comfunc global IMetaDataImport_GetMemberProps            56 int,var,var,int,var,var,var,var,var,var,var,sptr,var
#comfunc global IMetaDataImport_GetFieldProps             57 int,var,var,int,var,var,var,var,var,sptr,var
#comfunc global IMetaDataImport_GetPropertyProps          58 int,var,wstr,int,var,var,var,var,var,sptr,var,var,var,var,int,var
#comfunc global IMetaDataImport_GetParamProps             59 int,var,var,var,int,var,var,var,sptr,var
#comfunc global IMetaDataImport_GetCustomAttributeByName  60 int,wstr,sptr,var
#comfunc global IMetaDataImport_IsValidToken              61 int
#comfunc global IMetaDataImport_GetNestedClassProps       62 int,var
#comfunc global IMetaDataImport_GetNativeCallConvFromSig  63 sptr,int,var
#comfunc global IMetaDataImport_IsGlobal                  64 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。