IMetaDataImport
COM公式ドキュメント
ポータブル実行可能 (PE) ファイル、あるいはタイプライブラリやスタンドアロンのランタイムメタデータバイナリなどの他のソースから、既存のメタデータをインポートおよび操作するためのメソッドを提供します。
メソッド 62
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定したハンドルで識別される列挙子を閉じます。
| hEnum | void* | inout | 閉じる列挙子のハンドル。 |
解説(Remarks)
hEnum で指定するハンドルは、以前の EnumName 呼び出し (たとえば IMetaDataImport::EnumTypeDefs) から取得します。
指定した列挙子で取得された列挙内の要素数を取得します。
| hEnum | void* | inout | 列挙子のハンドル。 |
| pulCount | DWORD* | inout | 列挙された要素の数。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
hEnum で指定するハンドルは、以前の EnumName 呼び出し (たとえば IMetaDataImport::EnumTypeDefs) から取得します。
指定した列挙子を指定した位置にリセットします。
| hEnum | void* | inout | リセットする列挙子。 |
| ulPos | DWORD | in | 列挙子を配置する新しい位置。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在のスコープ内のすべての型を表す TypeDef トークンを列挙します。
| phEnum | void** | inout | 新しい列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| rTypeDefs | DWORD* | inout | 取得した TypeDef トークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgTypeDefs 配列の最大サイズ。 |
| pcTypeDefs | DWORD* | inout | rgTypeDefs に返された TypeDef トークンの数。 |
戻り値
解説(Remarks)
TypeDef トークンは、クラスやインターフェイスなどの型のほか、拡張メカニズムを通じて追加された任意の型を表します。
インターフェイスの実装を表す MethodDef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。 |
| td | DWORD | in | インターフェイスの実装を表す InterfaceImpl トークンを列挙する対象となる TypeDef のトークン。 |
| rImpls | DWORD* | inout | InterfaceImpl トークンを格納するために使用する配列。 |
| cMax | DWORD | in | rImpls 配列の最大サイズ。 |
| pcImpls | DWORD* | inout | rImpls に返されたトークンの実際の数。 |
戻り値
| HRESULT | 説明 |
|---|---|
| S_OK | EnumInterfaceImpls は正常に終了しました。 |
| S_FALSE | 列挙する InterfaceImpl トークンがありません。この場合、pcImpls は 0 (ゼロ) です。 |
現在のメタデータスコープで定義されている TypeRef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| rTypeRefs | DWORD* | inout | 取得した TypeRef トークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgTypeRefs 配列の最大サイズ。 |
| pcTypeRefs | DWORD* | inout | rgTypeRefs に返された TypeRef トークンの数へのポインター。 |
戻り値
指定した名前を持つ型の TypeDef メタデータトークンへのポインターを取得します。
| szTypeDef | LPWSTR | in | TypeDef トークンを取得する対象の型の名前。 |
| tkEnclosingClass | DWORD | in | 外側のクラスを表す TypeDef または TypeRef トークン。検索する型が入れ子になったクラスでない場合は、この値を NULL に設定します。 |
| ptd | DWORD* | inout | 見つかった型の TypeDef トークンを受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在のメタデータスコープにあるアセンブリまたはモジュールの名前と、オプションでバージョン識別子を取得します。
| szName | LPWSTR | outoptional | アセンブリまたはモジュールの名前を格納するバッファー。 |
| cchName | DWORD | in | szName のサイズ (ワイド文字数)。 |
| pchName | DWORD* | inout | szName に返されたワイド文字の数。 |
| pmvid | GUID* | inout | アセンブリまたはモジュールのバージョンを一意に識別する GUID へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在のメタデータスコープで参照されているモジュールのメタデータトークンを取得します。
| pmd | DWORD* | inout | 現在のスコープを表す Module トークンを受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定した TypeDef トークンで表される型のメタデータ情報を返します。
| td | DWORD | in | 情報を取得する対象の型 (TypeDef) のトークンを指定する。 |
| szTypeDef | LPWSTR | outoptional | 型名を格納するバッファー。 |
| cchTypeDef | DWORD | in | szTypeDef のサイズ (ワイド文字数)。 |
| pchTypeDef | DWORD* | inout | szTypeDef に返されたワイド文字の数。 |
| pdwTypeDefFlags | DWORD* | inout | 型定義を修飾するフラグへのポインター。この値は CorTypeAttr 列挙体のビットマスクです。 |
| ptkExtends | DWORD* | inout | 要求された型の基本型を表す TypeDef または TypeRef メタデータトークン。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したメソッドを実装する型と、そのメソッドを宣言するインターフェイスのメタデータトークンへのポインターを取得します。
| iiImpl | DWORD | in | 情報を取得する対象の InterfaceImpl トークンを指定する。 |
| pClass | DWORD* | inout | インターフェイスを実装するクラスの TypeDef トークンを受け取る。 |
| ptkIface | DWORD* | inout | 被実装側を表すメタデータトークン。すなわち、ptkClass によって実装されるインターフェイス。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
InterfaceImpl トークンは、InterfaceImpl テーブルに格納されている、実装する型と実装されるインターフェイスの間の 1 つのマッピングを表します。
指定した TypeRef トークンで参照される型に関連付けられたメタデータを取得します。
| tr | DWORD | in | 情報を取得する対象の TypeRef トークンを指定する。 |
| ptkResolutionScope | DWORD* | inout | 参照が行われるスコープへのポインター。この値は AssemblyRef または ModuleRef トークンです。 |
| szName | LPWSTR | outoptional | 型名を格納するバッファー。 |
| cchName | DWORD | in | szName の要求サイズ (ワイド文字数)。 |
| pchName | DWORD* | inout | szName の返されたサイズ (ワイド文字数)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定した TypeRef トークンで表される型参照を解決します。
| tr | DWORD | in | 解決する対象の TypeRef トークンを指定する。 |
| riid | GUID* | in | ppIScope で返すインターフェイスの IID。通常は IID_IMetaDataImport になります。 |
| ppIScope | IUnknown** | out | 参照先の型が定義されているモジュールスコープへのインターフェイス。 |
| ptd | DWORD* | inout | 解決された型の TypeDef トークンを受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
解決する型参照の解決スコープが AssemblyRef である場合、ResolveTypeRef メソッドは、IMetaDataDispenser::OpenScope メソッドまたは IMetaDataDispenser::OpenScopeOnMemory メソッドの呼び出しによって既に開かれているメタデータスコープ内でのみ一致を検索します。これは、ResolveTypeRef が、AssemblyRef スコープだけからは、そのアセンブリがディスク上またはグローバルアセンブリキャッシュのどこに格納されているかを判別できないためです。
指定した型のメンバーを表す MemberDef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。 |
| cl | DWORD | in | メンバーを列挙する対象の型 (TypeDef) のトークンを指定する。 |
| rMembers | DWORD* | inout | 取得したメンバートークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgMembers 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rgMembers に返された MemberDef トークンの実際の数。 |
戻り値
| HRESULT | 説明 |
|---|---|
| S_OK | EnumMembers は正常に終了しました。 |
| S_FALSE | 列挙する MemberRef トークンがありません。この場合、pcTokens は 0 (ゼロ) です。 |
解説(Remarks)
クラスのメンバーのコレクションを列挙する場合、EnumMembers はそのクラスに直接定義されているメンバーのみを返します。クラスがそれらの継承されたメンバーの実装を提供している場合でも、クラスが継承するメンバーは返しません。継承されたメンバーを列挙するには、呼び出し側が継承チェーンを明示的にたどる必要があります。継承チェーンの規則は、元のメタデータを出力した言語やコンパイラーによって異なる場合があることに注意してください。
指定した名前を持つ、指定した型のメンバーを表す MemberDef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。 |
| cl | DWORD | in | メンバーを列挙する対象の型 (TypeDef) のトークンを指定する。 |
| szName | LPWSTR | in | 列挙子のスコープを制限するメンバー名。 |
| rMembers | DWORD* | inout | 取得したメンバートークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgMembers 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rgMembers に返された MemberDef トークンの実際の数。 |
戻り値
| HRESULT | 説明 |
|---|---|
| S_OK | EnumMembersWithName は正常に終了しました。 |
| S_FALSE | 列挙する MemberRef トークンがありません。この場合、pcTokens は 0 (ゼロ) です。 |
解説(Remarks)
このメソッドはフィールドとメソッドを列挙しますが、プロパティやイベントは列挙しません。EnumMembers とは異なり、EnumMembersWithName は指定した名前を持たないすべてのフィールドトークンおよびメンバートークンを破棄します。
指定した型のメソッドを表す MethodDef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| cl | DWORD | in | メソッドを列挙する対象の型 (TypeDef) のトークンを指定する。 |
| rMethods | DWORD* | inout | 取得した MethodDef トークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | MethodDef の rgMethods 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rgMethods に返された MethodDef トークンの数。 |
戻り値
| HRESULT | 説明 |
|---|---|
| S_OK | EnumMethods は正常に終了しました。 |
| S_FALSE | 列挙する MethodDef トークンがありません。この場合、pcTokens は 0 (ゼロ) です。 |
指定した名前を持ち、指定した TypeDef トークンで参照される型によって定義されているメソッドを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| cl | DWORD | in | メソッドを列挙する対象の型 (TypeDef) のトークンを指定する。 |
| szName | LPWSTR | in | 列挙のスコープを制限する名前。 |
| rMethods | DWORD* | inout | 取得した MethodDef トークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgMethods 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rgMethods に返された MethodDef トークンの数。 |
戻り値
解説(Remarks)
このメソッドはフィールドとメソッドを列挙しますが、プロパティやイベントは列挙しません。EnumMethods とは異なり、EnumMethodsWithName は指定した名前を持たないすべてのメソッドトークンを破棄します。
指定した TypeDef トークンで参照される型の FieldDef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。 |
| cl | DWORD | in | フィールドを列挙する対象の型 (TypeDef) のトークンを指定する。 |
| rFields | DWORD* | inout | 取得した FieldDef トークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgFields 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rgFields に返された FieldDef トークンの実際の数。 |
戻り値
指定した名前を持つ、指定した型の FieldDef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。 |
| cl | DWORD | in | フィールドを列挙する対象の型 (TypeDef) のトークンを指定する。 |
| szName | LPWSTR | in | 列挙のスコープを制限するフィールド名。 |
| rFields | DWORD* | inout | FieldDef トークンを格納するために使用する配列。 |
| cMax | DWORD | in | rFields 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rFields に返された FieldDef トークンの実際の数。 |
戻り値
解説(Remarks)
EnumFields とは異なり、EnumFieldsWithName は指定した名前を持たないすべてのフィールドトークンを破棄します。
指定した MethodDef トークンで参照されるメソッドのパラメーターを表す ParamDef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| mb | DWORD | in | パラメーターを列挙する対象のメソッド (MethodDef) のトークンを指定する。 |
| rParams | DWORD* | inout | ParamDef トークンを格納するために使用する配列。 |
| cMax | DWORD | in | rParams 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rParams に返された ParamDef トークンの数。 |
戻り値
指定した型のメンバーを表す MemberRef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。 |
| tkParent | DWORD | in | メンバーを列挙する対象の型の TypeDef、TypeRef、MethodDef、または ModuleRef トークン。 |
| rMemberRefs | DWORD* | inout | 取得した MemberRef トークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgMemberRefs 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rgMemberRefs に返された MemberRef トークンの実際の数。 |
戻り値
| HRESULT | 説明 |
|---|---|
| S_OK | EnumMemberRefs は正常に終了しました。 |
| S_FALSE | 列挙する MemberRef トークンがありません。この場合、pcTokens は 0 (ゼロ) です。 |
指定した型のメソッドを表す MethodBody トークンおよび MethodDeclaration トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| td | DWORD | in | メソッド実装を列挙する対象の型 (TypeDef) のトークンを指定する。 |
| rMethodBody | DWORD* | inout | MethodBody トークンを格納する配列。 |
| rMethodDecl | DWORD* | inout | MethodDeclaration トークンを格納する配列。 |
| cMax | DWORD | in | rMethodBody 配列および rMethodDecl 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rMethodBody および rMethodDecl に返されたメソッドの実際の数。 |
戻り値
指定したメタデータスコープ内のオブジェクトのアクセス許可を列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| tk | DWORD | in | 検索のスコープを制限するメタデータトークン。可能な限り広いスコープを検索する場合は NULL。 |
| dwActions | DWORD | in | rPermission に含める SecurityAction 値を表すフラグ。すべてのアクションを返す場合は 0。 |
| rPermission | DWORD* | inout | Permission トークンを格納するために使用する配列。 |
| cMax | DWORD | in | rPermission 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rPermission に返された Permission トークンの数。 |
戻り値
| td | DWORD | in | メンバーを検索する対象の型 (TypeDef) のトークンを指定する。 |
| szName | LPWSTR | in | 検索するメンバーの名前を指定する文字列である。 |
| pvSigBlob | BYTE* | inout | メンバーのシグネチャを表す blob へのポインタである。 |
| cbSigBlob | DWORD | in | シグネチャ blob のサイズをバイト数で指定する。 |
| pmb | DWORD* | inout | 見つかったメンバーのトークンを受け取る。 |
| td | DWORD | in | メソッドを検索する対象の型 (TypeDef) のトークンを指定する。 |
| szName | LPWSTR | in | 検索するメソッドの名前を指定する文字列である。 |
| pvSigBlob | BYTE* | inout | メソッドのシグネチャを表す blob へのポインタである。 |
| cbSigBlob | DWORD | in | シグネチャ blob のサイズをバイト数で指定する。 |
| pmb | DWORD* | inout | 見つかったメソッドの MethodDef トークンを受け取る。 |
| td | DWORD | in | フィールドを検索する対象の型 (TypeDef) のトークンを指定する。 |
| szName | LPWSTR | in | 検索するフィールドの名前を指定する文字列である。 |
| pvSigBlob | BYTE* | inout | フィールドのシグネチャを表す blob へのポインタである。 |
| cbSigBlob | DWORD | in | シグネチャ blob のサイズをバイト数で指定する。 |
| pmb | DWORD* | inout | 見つかったフィールドの FieldDef トークンを受け取る。 |
指定した型に含まれ、指定した名前とメタデータシグネチャを持つメンバー参照の MemberRef トークンへのポインターを取得します。
| td | DWORD | in | メンバー参照を検索する対象の型または親のトークンを指定する。 |
| szName | LPWSTR | in | 検索するメンバー参照の名前。 |
| pvSigBlob | BYTE* | inout | メンバー参照のバイナリメタデータシグネチャへのポインター。 |
| cbSigBlob | DWORD | in | pvSigBlob のサイズ (バイト単位)。 |
| pmr | DWORD* | inout | 見つかった MemberRef トークンを受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
メンバーは、それを含むクラスまたはインターフェイス (tkTypeRef)、その名前 (szName)、およびオプションでそのシグネチャ (pvSigBlob) を使用して指定します。
シグネチャは特定のスコープに束縛されるため、FindMemberRef に渡すシグネチャは現在のスコープ内で生成されたものである必要があります。シグネチャには、外側のクラスまたは値型を識別するトークンを埋め込むことができます。このトークンはローカルの TypeDef テーブルへのインデックスです。現在のスコープのコンテキスト外でランタイムシグネチャを構築し、そのシグネチャを FindMemberRef の入力として使用することはできません。
FindMemberRef は、クラスまたはインターフェイスに直接定義されたメンバー参照のみを検出します。継承されたメンバー参照は検出しません。
指定した MethodDef トークンで参照されるメソッドに関連付けられたメタデータを取得します。
| mb | DWORD | in | 情報を取得する対象のメソッド (MethodDef) のトークンを指定する。 |
| pClass | DWORD* | inout | メソッドを所有する型の TypeDef トークンを受け取る。 |
| szMethod | LPWSTR | outoptional | メソッド名を格納するバッファーへのポインター。 |
| cchMethod | DWORD | in | szMethod の要求サイズ。 |
| pchMethod | DWORD* | inout | szMethod のサイズ (ワイド文字数) へのポインター。切り詰めが発生した場合は、メソッド名の実際のワイド文字数。 |
| pdwAttr | DWORD* | inout | メソッドに関連付けられたフラグへのポインター。 |
| ppvSigBlob | BYTE** | inout | メソッドのバイナリメタデータシグネチャへのポインター。 |
| pcbSigBlob | DWORD* | inout | ppvSigBlob のサイズ (バイト単位) へのポインター。 |
| pulCodeRVA | DWORD* | inout | メソッドの相対仮想アドレスへのポインター。 |
| pdwImplFlags | DWORD* | inout | メソッドの実装フラグへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したトークンで参照されるメンバーに関連付けられたメタデータを取得します。
| mr | DWORD | in | 情報を取得する対象の MemberRef トークンを指定する。 |
| ptk | DWORD* | inout | メンバーを宣言するクラスを表す TypeDef、TypeRef、または TypeSpec トークン、メンバーを宣言するモジュールクラスを表す ModuleRef トークン、またはメンバーを表す MethodDef。 |
| szMember | LPWSTR | outoptional | メンバー名を格納する文字列バッファー。 |
| cchMember | DWORD | in | szMember の要求サイズ (ワイド文字数)。 |
| pchMember | DWORD* | inout | szMember の返されたサイズ (ワイド文字数)。 |
| ppvSigBlob | BYTE** | inout | メンバーのバイナリメタデータシグネチャへのポインター。 |
| pbSig | DWORD* | inout | シグネチャ blob のサイズをバイト数で受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定した TypeDef トークンで参照される型のプロパティを表す PropertyDef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| td | DWORD | in | プロパティを列挙する対象の型 (TypeDef) のトークンを指定する。 |
| rProperties | DWORD* | inout | 取得した Property トークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgProperties 配列の最大サイズ。 |
| pcProperties | DWORD* | inout | rgProperties に返された PropertyDef トークンの数。 |
戻り値
指定した TypeDef トークンのイベント定義トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。 |
| td | DWORD | in | イベントを列挙する対象の型 (TypeDef) のトークンを指定する。 |
| rEvents | DWORD* | inout | 取得した Event トークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgEvents 配列の最大サイズ。 |
| pcEvents | DWORD* | inout | rgEvents に返されたイベントの実際の数。 |
戻り値
| ev | DWORD | in | 情報を取得する対象のイベント (Event) のトークンを指定する。 |
| pClass | DWORD* | inout | イベントを所有する型の TypeDef トークンを受け取る。 |
| szEvent | LPWSTR | in | イベント名を受け取るバッファへのポインタである。 |
| cchEvent | DWORD | in | イベント名用バッファの最大文字数を指定する。 |
| pchEvent | DWORD* | inout | 実際に書き込まれたイベント名の文字数を受け取る。 |
| pdwEventFlags | DWORD* | inout | イベントの属性フラグを受け取る。 |
| ptkEventType | DWORD* | inout | イベントのデリゲート型を示すトークンを受け取る。 |
| pmdAddOn | DWORD* | inout | イベントの追加 (add) アクセサーメソッドのトークンを受け取る。 |
| pmdRemoveOn | DWORD* | inout | イベントの削除 (remove) アクセサーメソッドのトークンを受け取る。 |
| pmdFire | DWORD* | inout | イベントの発火 (fire) メソッドのトークンを受け取る。 |
| rmdOtherMethod | DWORD* | inout | イベントに関連するその他のメソッドのトークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | その他メソッド配列に格納できる最大要素数を指定する。 |
| pcOtherMethod | DWORD* | inout | 実際に取得したその他メソッドの数を受け取る。 |
指定したメソッドが関連付けられているプロパティおよびプロパティ変更イベントを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| mb | DWORD | in | メソッドセマンティクスを列挙する対象のメソッド (MethodDef) のトークンを指定する。 |
| rEventProp | DWORD* | inout | 関連付けられたイベントまたはプロパティのトークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgEventProp 配列の最大サイズ。 |
| pcEventProp | DWORD* | inout | rgEventProp に返されたイベントまたはプロパティの数。 |
戻り値
| HRESULT | 説明 |
|---|---|
| S_OK | EnumMethodSemantics は正常に終了しました。 |
| S_FALSE | 列挙するイベントまたはプロパティがありません。この場合、pcEventProp は 0 (ゼロ) です。 |
指定した MethodDef トークンで参照されるメソッドと、指定した EventProp トークンで参照される対になったプロパティおよびイベントとの関係を示すフラグを取得します。
| mb | DWORD | in | 情報を取得する対象のメソッド (MethodDef) のトークンを指定する。 |
| tkEventProp | DWORD | in | メソッドの役割を取得する対象の、対になったプロパティおよびイベントを表すトークン。 |
| pdwSemanticsFlags | DWORD* | inout | 関連付けられたセマンティクスフラグへのポインター。この値は CorMethodSemanticsAttr 列挙体のビットマスクです。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
| td | DWORD | in | 情報を取得する対象の型 (TypeDef) のトークンを指定する。 |
| pdwPackSize | DWORD* | inout | フィールドのパッキングサイズ (アラインメント) を受け取る。 |
| rFieldOffset | COR_FIELD_OFFSET* | inout | 各フィールドのオフセットを示す COR_FIELD_OFFSET 配列へのポインタである。 |
| cMax | DWORD | in | オフセット配列に格納できる最大要素数を指定する。 |
| pcFieldOffset | DWORD* | inout | 実際に取得したフィールドオフセットの数を受け取る。 |
| pulClassSize | DWORD* | inout | クラス全体のサイズをバイト数で受け取る。 |
指定したフィールドメタデータトークンで表されるフィールドのネイティブなアンマネージ型へのポインターを取得します。
| tk | DWORD | in | 相互運用マーシャリング情報を取得する対象のフィールドを表すメタデータトークン。 |
| ppvNativeType | BYTE** | inout | フィールドのネイティブ型のメタデータシグネチャへのポインター。 |
| pcbNativeType | DWORD* | inout | ppvNativeType のサイズ (バイト単位)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したトークンで表されるメソッドまたはフィールドの相対仮想アドレス (RVA) と実装フラグを取得します。
| tk | DWORD | in | RVA を返す対象のコードオブジェクトを表す MethodDef または FieldDef メタデータトークン。トークンが FieldDef の場合、フィールドはグローバル変数である必要があります。 |
| pulCodeRVA | DWORD* | inout | トークンで表されるコードオブジェクトの相対仮想アドレスへのポインター。 |
| pdwImplFlags | DWORD* | inout | メソッドの実装フラグへのポインター。この値は CorMethodImpl 列挙体のビットマスクです。pdwImplFlags の値は、tk が MethodDef トークンである場合にのみ有効です。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定した Permission トークンで表される System.Security.PermissionSet に関連付けられたメタデータを取得します。
| pm | DWORD | in | 情報を取得する対象のアクセス許可セット (Permission) のトークンを指定する。 |
| pdwAction | DWORD* | inout | アクセス許可セットへのポインター。 |
| ppvPermission | void** | in | アクセス許可セットのバイナリメタデータシグネチャへのポインター。 |
| pcbPermission | DWORD* | inout | const のサイズ (バイト単位)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したトークンに関連付けられたバイナリメタデータシグネチャを取得します。
| mdSig | DWORD | in | シグネチャを取得する対象の StandAloneSig トークンを指定する。 |
| ppvSig | BYTE** | inout | 返されたメタデータシグネチャへのポインター。 |
| pcbSig | DWORD* | inout | バイナリメタデータシグネチャのサイズ (バイト単位)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したメタデータトークンで参照されるモジュールの名前を取得します。
| mur | DWORD | in | 情報を取得する対象の ModuleRef トークンを指定する。 |
| szName | LPWSTR | outoptional | モジュール名を格納するバッファー。 |
| cchName | DWORD | in | szName の要求サイズ (ワイド文字数)。 |
| pchName | DWORD* | inout | szName の返されたサイズ (ワイド文字数)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
インポートされたモジュールを表す ModuleRef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| rModuleRefs | DWORD* | inout | 取得した ModuleRef トークンを格納する配列へのポインタである。 |
| cmax | DWORD | in | 配列に格納できる最大要素数を指定する。 |
| pcModuleRefs | DWORD* | inout | rgModuleRefs に返された ModuleRef トークンの数。 |
戻り値
指定したトークンで表される型指定のバイナリメタデータシグネチャを取得します。
| typespec | DWORD | in | シグネチャを取得する対象の TypeSpec トークンを指定する。 |
| ppvSig | BYTE** | inout | バイナリメタデータシグネチャへのポインター。 |
| pcbSig | DWORD* | inout | メタデータシグネチャのサイズ (バイト単位)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したメタデータトークンで参照されるオブジェクトの UTF-8 名を取得します。このメソッドは非推奨です。
| tk | DWORD | in | 名前を返す対象のオブジェクトを表すトークン。 |
| pszUtf8NamePtr | CHAR** | inout | ヒープ内の UTF-8 オブジェクト名へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
GetNameFromToken は非推奨です。代わりに、必要な特定の種類のトークンのプロパティを取得するメソッド、たとえばフィールドの場合は GetFieldProps、メソッドの場合は GetMethodProps を呼び出してください。
現在のメタデータスコープ内の未解決のメソッドを表す MemberDef トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| rMethods | DWORD* | inout | 取得した未解決メソッドのトークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgMethods 配列の最大サイズ。 |
| pcTokens | DWORD* | inout | rgMethods に返された MemberDef トークンの数。 |
戻り値
解説(Remarks)
未解決のメソッドとは、宣言されているが実装されていないメソッドのことです。メソッドが miForwardRef でマークされ、かつ mdPinvokeImpl または miRuntime のいずれかがゼロに設定されている場合、そのメソッドは列挙に含まれます。言い換えると、未解決のメソッドとは、miForwardRef でマークされているものの、(PInvoke 経由で到達する) アンマネージコードでも実装されておらず、ランタイム自体によって内部的にも実装されていないクラスメソッドです。
この列挙は、モジュールスコープ (グローバル) で定義されているメソッド、またはインターフェイスや抽象クラスで定義されているメソッドをすべて除外します。
指定したメタデータトークンで表されるリテラル文字列を取得します。
| stk | DWORD | in | 取得する対象のユーザー文字列 (String) のトークンを指定する。 |
| szString | LPWSTR | outoptional | 要求された文字列のコピー。 |
| cchString | DWORD | in | 要求された szString の最大サイズ (ワイド文字数)。 |
| pchString | DWORD* | inout | 返された szString のサイズ (ワイド文字数)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
PInvoke 呼び出しのターゲットアセンブリを表す ModuleRef トークンを取得します。
| tk | DWORD | in | PInvoke マッピングメタデータを取得する対象の FieldDef または MethodDef トークン。 |
| pdwMappingFlags | DWORD* | inout | マッピングに使用されるフラグへのポインター。この値は CorPinvokeMap 列挙体のビットマスクです。 |
| szImportName | LPWSTR | outoptional | アンマネージのターゲット DLL の名前。 |
| cchImportName | DWORD | in | szImportName のサイズ (ワイド文字数)。 |
| pchImportName | DWORD* | inout | szImportName に返されたワイド文字の数。 |
| pmrImportDLL | DWORD* | inout | 対象 DLL を示す ModuleRef トークンを受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在のスコープ内のスタンドアロンシグネチャを表す Signature トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| rSignatures | DWORD* | inout | 取得した StandAloneSig トークンを格納する配列へのポインタである。 |
| cmax | DWORD | in | 配列に格納できる最大要素数を指定する。 |
| pcSignatures | DWORD* | inout | rgSignatures に返された Signature トークンの数。 |
戻り値
現在のメタデータスコープで定義されている TypeSpec トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは、この値を NULL にする必要があります。 |
| rTypeSpecs | DWORD* | inout | 取得した TypeSpec トークンを格納する配列へのポインタである。 |
| cmax | DWORD | in | 配列に格納できる最大要素数を指定する。 |
| pcTypeSpecs | DWORD* | inout | rgTypeSpecs に返された TypeSpec トークンの数。 |
戻り値
現在のメタデータスコープ内のハードコードされた文字列を表す String トークンを列挙します。
| phEnum | void** | inout | 列挙子へのポインター。このメソッドの最初の呼び出しでは NULL にする必要があります。 |
| rStrings | DWORD* | inout | 取得したユーザー文字列 (String) トークンを格納する配列へのポインタである。 |
| cmax | DWORD | in | 配列に格納できる最大要素数を指定する。 |
| pcStrings | DWORD* | inout | rgStrings に返された String トークンの数。 |
戻り値
指定した MethodDef トークンで表されるメソッドの、指定したパラメーターを表すトークンを取得します。
| md | DWORD | in | 対象のメソッド (MethodDef) のトークンを指定する。 |
| ulParamSeq | DWORD | in | 要求されたパラメーターが現れる、パラメーターリスト内の序数位置。パラメーターは 1 から始まる番号が付けられ、メソッドの戻り値は位置 0 になります。 |
| ppd | DWORD* | inout | 対応する Param トークンを受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定した型またはメンバーに関連付けられたカスタム属性定義トークンを列挙します。
| phEnum | void** | inout | 返された列挙子へのポインター。 |
| tk | DWORD | in | 列挙のスコープを表すトークン。すべてのカスタム属性を対象とする場合は 0。 |
| tkType | DWORD | in | 列挙する属性の型を表すトークン。すべての型を対象とする場合は 0。 |
| rCustomAttributes | DWORD* | inout | 取得した CustomAttribute トークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | rgCustomAttributes 配列の最大サイズ。 |
| pcCustomAttributes | DWORD* | inout | rgCustomAttributes に返されたトークン値の実際の数。 |
戻り値
| HRESULT | 説明 |
|---|---|
| S_OK | EnumCustomAttributes は正常に終了しました。 |
| S_FALSE | 列挙するカスタム属性がありません。この場合、pcCustomAttributes は 0 (ゼロ) です。 |
メタデータトークンを指定して、カスタム属性の値を取得します。
| cv | DWORD | in | 取得するカスタム属性を表すメタデータトークン。 |
| ptkObj | DWORD* | inout | カスタム属性が修飾するオブジェクトを表すメタデータトークン。この値は、mdCustomAttribute を除く任意の種類のメタデータトークンにできます。トークンの種類の詳細については、メタデータトークンを参照してください。 |
| ptkType | DWORD* | inout | 返されるカスタム属性の型を表す mdMethodDef または mdMemberRef メタデータトークン。 |
| ppBlob | void** | in | カスタム属性の値であるデータの配列へのポインター。 |
| pcbSize | DWORD* | inout | カスタム属性 blob のサイズをバイト数で受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
カスタム属性はデータの配列として格納されており、その形式はメタデータエンジンによって解釈されます。
指定したスコープ内にあり、指定した名前を持つ型参照の TypeRef トークンへのポインターを取得します。
| tkResolutionScope | DWORD | in | 型参照が定義されているモジュール、アセンブリ、または型をそれぞれ指定する ModuleRef、AssemblyRef、または TypeRef トークン。 |
| szName | LPWSTR | in | 検索する型参照の名前。 |
| ptr | DWORD* | inout | 見つかった TypeRef トークンを受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したメタデータトークンで参照される型メンバーの、名前、バイナリシグネチャ、相対仮想アドレスを含むメタデータ情報を取得します。
| mb | DWORD | in | 情報を取得する対象のメンバートークンを指定する。 |
| pClass | DWORD* | inout | メンバーを所有する型の TypeDef トークンを受け取る。 |
| szMember | LPWSTR | outoptional | メンバーの名前。 |
| cchMember | DWORD | in | szMember バッファーのサイズ (ワイド文字数)。 |
| pchMember | DWORD* | inout | 返された名前のサイズ (ワイド文字数)。 |
| pdwAttr | DWORD* | inout | メンバーに適用されたフラグ値。 |
| ppvSigBlob | BYTE** | inout | メンバーのバイナリメタデータシグネチャへのポインター。 |
| pcbSigBlob | DWORD* | inout | ppvSigBlob のサイズ (バイト単位)。 |
| pulCodeRVA | DWORD* | inout | メンバーの相対仮想アドレスへのポインター。 |
| pdwImplFlags | DWORD* | inout | メンバーに関連付けられたメソッド実装フラグ。 |
| pdwCPlusTypeFlag | DWORD* | inout | ValueType をマークするフラグ。 |
| ppValue | void** | inout | このメンバーが返す定数文字列値。 |
| pcchValue | DWORD* | inout | ppValue のサイズ (文字数)。ppValue が文字列を保持していない場合は 0。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定した FieldDef トークンで参照されるフィールドに関連付けられたメタデータを取得します。
| mb | DWORD | in | 情報を取得する対象のフィールド (FieldDef) のトークンを指定する。 |
| pClass | DWORD* | inout | フィールドを所有する型の TypeDef トークンを受け取る。 |
| szField | LPWSTR | outoptional | フィールドの名前。 |
| cchField | DWORD | in | szField 用のバッファーのサイズ (ワイド文字数)。 |
| pchField | DWORD* | inout | 返されたバッファーの実際のサイズ。 |
| pdwAttr | DWORD* | inout | フィールドのメタデータに関連付けられたフラグ。 |
| ppvSigBlob | BYTE** | inout | フィールドを記述するバイナリメタデータ値へのポインター。 |
| pcbSigBlob | DWORD* | inout | ppvSigBlob のサイズ (バイト単位)。 |
| pdwCPlusTypeFlag | DWORD* | inout | フィールドの値型を指定するフラグ。 |
| ppValue | void** | inout | フィールドの定数値。 |
| pcchValue | DWORD* | inout | ppValue のサイズ (文字数)。文字列が存在しない場合は 0。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
| prop | DWORD | in | 情報を取得する対象のプロパティ (Property) のトークンを指定する。 |
| pClass | DWORD* | inout | プロパティを所有する型の TypeDef トークンを受け取る。 |
| szProperty | LPWSTR | in | プロパティ名を受け取るバッファへのポインタである。 |
| cchProperty | DWORD | in | プロパティ名用バッファの最大文字数を指定する。 |
| pchProperty | DWORD* | inout | 実際に書き込まれたプロパティ名の文字数を受け取る。 |
| pdwPropFlags | DWORD* | inout | プロパティの属性フラグを受け取る。 |
| ppvSig | BYTE** | inout | プロパティのシグネチャ blob へのポインタを受け取る。 |
| pbSig | DWORD* | inout | シグネチャ blob のサイズをバイト数で受け取る。 |
| pdwCPlusTypeFlag | DWORD* | inout | 既定値の要素型を示す ELEMENT_TYPE 値を受け取る。 |
| ppDefaultValue | void** | inout | プロパティの既定値へのポインタを受け取る。 |
| pcchDefaultValue | DWORD* | inout | 既定値が文字列の場合の文字数を受け取る。 |
| pmdSetter | DWORD* | inout | プロパティの設定 (set) アクセサーメソッドのトークンを受け取る。 |
| pmdGetter | DWORD* | inout | プロパティの取得 (get) アクセサーメソッドのトークンを受け取る。 |
| rmdOtherMethod | DWORD* | inout | プロパティに関連するその他のメソッドのトークンを格納する配列へのポインタである。 |
| cMax | DWORD | in | その他メソッド配列に格納できる最大要素数を指定する。 |
| pcOtherMethod | DWORD* | inout | 実際に取得したその他メソッドの数を受け取る。 |
指定した ParamDef トークンで参照されるパラメーターのメタデータ値を取得します。
| tk | DWORD | in | 情報を取得する対象のパラメーター (Param) のトークンを指定する。 |
| pmd | DWORD* | inout | パラメーターを所有するメソッドの MethodDef トークンを受け取る。 |
| pulSequence | DWORD* | inout | メソッド引数リスト内でのパラメーターの序数位置。 |
| szName | LPWSTR | outoptional | パラメーターの名前を格納するバッファー。 |
| cchName | DWORD | in | szName の要求サイズ (ワイド文字数)。 |
| pchName | DWORD* | inout | szName の返されたサイズ (ワイド文字数)。 |
| pdwAttr | DWORD* | inout | パラメーターに関連付けられた属性フラグへのポインター。 |
| pdwCPlusTypeFlag | DWORD* | inout | パラメーターが ValueType であることを指定するフラグへのポインター。 |
| ppValue | void** | inout | パラメーターが返す定数文字列へのポインター。 |
| pcchValue | DWORD* | inout | ppValue のサイズ (ワイド文字数)。ppValue が文字列を保持していない場合は 0。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
名前と所有者を指定して、カスタム属性を取得します。
| tkObj | DWORD | in | カスタム属性を所有するオブジェクトを表すメタデータトークン。 |
| szName | LPWSTR | in | カスタム属性の名前。 |
| ppData | void** | in | カスタム属性の値であるデータの配列へのポインター。 |
| pcbData | DWORD* | inout | const に返されたデータのサイズ (バイト単位)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
同じ所有者に対して複数のカスタム属性を定義することは正当であり、それらが同じ名前を持つ場合さえあります。ただし、GetCustomAttributeByName は 1 つのインスタンスのみを返します (GetCustomAttributeByName は最初に見つかったインスタンスを返します)。カスタム属性のすべてのインスタンスを見つけるには、EnumCustomAttributes メソッドを呼び出してください。
指定したトークンがコードオブジェクトへの有効な参照を保持しているかどうかを示す値を取得します。
| tk | DWORD | in | 参照の有効性を確認する対象のトークン。 |
戻り値
tk が現在のスコープ内で有効なメタデータトークンである場合は true。それ以外の場合は false。
指定した入れ子になった型の親型の TypeDef トークンを取得します。
| tdNestedClass | DWORD | in | 親クラスのトークンを返す対象の型を表す TypeDef トークン。 |
| ptdEnclosingClass | DWORD* | inout | tdNestedClass が入れ子になっている型の TypeDef トークンへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したシグネチャポインターで表されるメソッドのネイティブ呼び出し規約を取得します。
| pvSig | void* | in | 呼び出し規約を返す対象のメソッドのメタデータシグネチャへのポインター。 |
| cbSig | DWORD | in | const のサイズ (バイト単位)。 |
| pCallConv | DWORD* | inout | ネイティブ呼び出し規約へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したメタデータトークンで表されるフィールド、メソッド、または型がグローバルスコープを持つかどうかを示す値を取得します。
| pd | DWORD | in | 判定する対象のメンバーまたはフィールドのトークンを指定する。 |
| pbGlobal | INT* | inout | 対象がグローバル (モジュールレベル) かどうかを示す値を受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
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 指定が可能。#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,sptr #comfunc global IMetaDataImport_ResetEnum 5 sptr,int #comfunc global IMetaDataImport_EnumTypeDefs 6 sptr,sptr,int,sptr #comfunc global IMetaDataImport_EnumInterfaceImpls 7 sptr,int,sptr,int,sptr #comfunc global IMetaDataImport_EnumTypeRefs 8 sptr,sptr,int,sptr #comfunc global IMetaDataImport_FindTypeDefByName 9 wstr,int,sptr #comfunc global IMetaDataImport_GetScopeProps 10 sptr,int,sptr,sptr #comfunc global IMetaDataImport_GetModuleFromScope 11 sptr #comfunc global IMetaDataImport_GetTypeDefProps 12 int,sptr,int,sptr,sptr,sptr #comfunc global IMetaDataImport_GetInterfaceImplProps 13 int,sptr,sptr #comfunc global IMetaDataImport_GetTypeRefProps 14 int,sptr,sptr,int,sptr #comfunc global IMetaDataImport_ResolveTypeRef 15 int,sptr,sptr,sptr #comfunc global IMetaDataImport_EnumMembers 16 sptr,int,sptr,int,sptr #comfunc global IMetaDataImport_EnumMembersWithName 17 sptr,int,wstr,sptr,int,sptr #comfunc global IMetaDataImport_EnumMethods 18 sptr,int,sptr,int,sptr #comfunc global IMetaDataImport_EnumMethodsWithName 19 sptr,int,wstr,sptr,int,sptr #comfunc global IMetaDataImport_EnumFields 20 sptr,int,sptr,int,sptr #comfunc global IMetaDataImport_EnumFieldsWithName 21 sptr,int,wstr,sptr,int,sptr #comfunc global IMetaDataImport_EnumParams 22 sptr,int,sptr,int,sptr #comfunc global IMetaDataImport_EnumMemberRefs 23 sptr,int,sptr,int,sptr #comfunc global IMetaDataImport_EnumMethodImpls 24 sptr,int,sptr,sptr,int,sptr #comfunc global IMetaDataImport_EnumPermissionSets 25 sptr,int,int,sptr,int,sptr #comfunc global IMetaDataImport_FindMember 26 int,wstr,sptr,int,sptr #comfunc global IMetaDataImport_FindMethod 27 int,wstr,sptr,int,sptr #comfunc global IMetaDataImport_FindField 28 int,wstr,sptr,int,sptr #comfunc global IMetaDataImport_FindMemberRef 29 int,wstr,sptr,int,sptr #comfunc global IMetaDataImport_GetMethodProps 30 int,sptr,sptr,int,sptr,sptr,sptr,sptr,sptr,sptr #comfunc global IMetaDataImport_GetMemberRefProps 31 int,sptr,sptr,int,sptr,sptr,sptr #comfunc global IMetaDataImport_EnumProperties 32 sptr,int,sptr,int,sptr #comfunc global IMetaDataImport_EnumEvents 33 sptr,int,sptr,int,sptr #comfunc global IMetaDataImport_GetEventProps 34 int,sptr,wstr,int,sptr,sptr,sptr,sptr,sptr,sptr,sptr,int,sptr #comfunc global IMetaDataImport_EnumMethodSemantics 35 sptr,int,sptr,int,sptr #comfunc global IMetaDataImport_GetMethodSemantics 36 int,int,sptr #comfunc global IMetaDataImport_GetClassLayout 37 int,sptr,sptr,int,sptr,sptr #comfunc global IMetaDataImport_GetFieldMarshal 38 int,sptr,sptr #comfunc global IMetaDataImport_GetRVA 39 int,sptr,sptr #comfunc global IMetaDataImport_GetPermissionSetProps 40 int,sptr,sptr,sptr #comfunc global IMetaDataImport_GetSigFromToken 41 int,sptr,sptr #comfunc global IMetaDataImport_GetModuleRefProps 42 int,sptr,int,sptr #comfunc global IMetaDataImport_EnumModuleRefs 43 sptr,sptr,int,sptr #comfunc global IMetaDataImport_GetTypeSpecFromToken 44 int,sptr,sptr #comfunc global IMetaDataImport_GetNameFromToken 45 int,sptr #comfunc global IMetaDataImport_EnumUnresolvedMethods 46 sptr,sptr,int,sptr #comfunc global IMetaDataImport_GetUserString 47 int,sptr,int,sptr #comfunc global IMetaDataImport_GetPinvokeMap 48 int,sptr,sptr,int,sptr,sptr #comfunc global IMetaDataImport_EnumSignatures 49 sptr,sptr,int,sptr #comfunc global IMetaDataImport_EnumTypeSpecs 50 sptr,sptr,int,sptr #comfunc global IMetaDataImport_EnumUserStrings 51 sptr,sptr,int,sptr #comfunc global IMetaDataImport_GetParamForMethodIndex 52 int,int,sptr #comfunc global IMetaDataImport_EnumCustomAttributes 53 sptr,int,int,sptr,int,sptr #comfunc global IMetaDataImport_GetCustomAttributeProps 54 int,sptr,sptr,sptr,sptr #comfunc global IMetaDataImport_FindTypeRef 55 int,wstr,sptr #comfunc global IMetaDataImport_GetMemberProps 56 int,sptr,sptr,int,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr #comfunc global IMetaDataImport_GetFieldProps 57 int,sptr,sptr,int,sptr,sptr,sptr,sptr,sptr,sptr,sptr #comfunc global IMetaDataImport_GetPropertyProps 58 int,sptr,wstr,int,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,int,sptr #comfunc global IMetaDataImport_GetParamProps 59 int,sptr,sptr,sptr,int,sptr,sptr,sptr,sptr,sptr #comfunc global IMetaDataImport_GetCustomAttributeByName 60 int,wstr,sptr,sptr #comfunc global IMetaDataImport_IsValidToken 61 int #comfunc global IMetaDataImport_GetNestedClassProps 62 int,sptr #comfunc global IMetaDataImport_GetNativeCallConvFromSig 63 sptr,int,sptr #comfunc global IMetaDataImport_IsGlobal 64 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。