IWbemPath
COM公式ドキュメント
IWbemPath インターフェイスは、オブジェクトパスパーサーの主要なインターフェイスであり、パスの解析を標準的な方法でプログラムから利用できるようにします。このインターフェイスは、パス情報を設定および取得するためのメインインターフェイスです。
メソッド 26
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IWbemPath::SetText メソッドは、パスパーサーがパスの情報を返せるように、パスを解析します。
| uMode | DWORD | in | 受け入れるパスの種類を指定するフラグ。 WBEMPATH_CREATE_ACCEPT_RELATIVEサーバー名のないパスを許可します。 WBEMPATH_CREATE_ACCEPT_ABSOLUTE将来の使用のために予約されています。 WBEMPATH_CREATE_ACCEPT_ALL空のパスの設定を許可します (これによりオブジェクトもクリアされます)。また、サーバー名のみを持つパスや、サーバー名を持たないパスも許可します。 WBEMPATH_TREAT_SINGLE_IDENT_AS_NS"XYZ" のような単純なパスを名前空間として解釈します。 |
| pszPath | LPWSTR | in | 解析するパス。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
IWbemPath::GetText メソッドは、あらかじめパーサーオブジェクトに設定されたパスのテキスト表現を返します。
| lFlags | INT | in | テキストをどのように返すかを制御するフラグ。 WBEMPATH_COMPRESSED廃止されています。使用しないでください。 WBEMPATH_GET_RELATIVE_ONLY相対パスを返します。サーバーと名前空間は省略されます。 WBEMPATH_GET_SERVER_TOOサーバーと名前空間を含む、パス全体を返します。 WBEMPATH_GET_SERVER_AND_NAMESPACE_ONLYパスのうちサーバーと名前空間の部分のみを返します。クラスまたはキーの部分は無視されます。 WBEMPATH_GET_NAMESPACE_ONLYパスのうち名前空間の部分のみを返します。 WBEMPATH_GET_ORIGINALSetText メソッドで渡された内容をそのまま返します。 |
| puBuffLength | DWORD* | inout | 呼び出し元は、これを pszText のサイズに設定します。メソッドが成功すると、終端の null 文字を含む、使用されたワイド文字数が puBufferLength に設定されます。 |
| pszText | LPWSTR | out | パスのテキスト表現。 |
戻り値
このメソッドは次の値を返します。
IWbemPath::GetInfo メソッドは、パーサーオブジェクトに設定されたパスに関する詳細情報を返します。
戻り値
このメソッドは次のいずれかの値を返します。
IWbemPath::SetServer メソッドは、パスのサーバー部分を設定します。
| Name | LPWSTR | in | 新しいサーバー名。NULL も指定できます。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
IWbemPath::GetServer メソッドは、パスのサーバー部分を取得します。
| puNameBufLength | DWORD* | inout | 入力時は、pszName が指すバッファーのサイズ (文字数) です。戻り時は、NULL 終端文字を含むサーバー名の文字数になります。 |
| pName | LPWSTR | out | サーバー名。 |
戻り値
このメソッドは次の値を返します。
解説(Remarks)
このメソッドは、pszName に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puNameBufLength を 0 (ゼロ) に設定して呼び出します。戻り時に、puNameBufLength は pszName とその終端 NULL 文字に必要なバッファーの大きさを示します。
IWbemPath::GetNamespaceCount メソッドは、パス内の名前空間の数を返します。
| puCount | DWORD* | out | パス内の名前空間の数。 |
戻り値
このメソッドは、次のいずれかの値を持つ HRESULT を返します。
IWbemPath::SetNamespace メソッドは、0 から始まるインデックスによってパス内での位置を指定し、名前空間を設定します。
| uIndex | DWORD | in | 名前空間を配置する位置のインデックス。パスの左端の名前空間がインデックス 0 (ゼロ) で、右に向かうにつれてインデックス値が大きくなります。指定できる最大値は現在の名前空間の数です。名前空間のインデックスは 0 から始まるため、その値を指定すると末尾に名前空間が追加されます。 |
| pszName | LPWSTR | in | 名前空間の名前。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
インデックスに基づいて名前空間を取得します。
| uIndex | DWORD | in | 読み取る名前空間のインデックス。パスの左端の名前空間がインデックス 0 で、右に向かうにつれてインデックス値が大きくなります。指定できる最大値は、現在の名前空間の数から 1 を引いた値です。 |
| puNameBufLength | DWORD* | inout | 呼び出し元は、これをバッファーが保持できる文字数に設定します。成功すると、NULL 終端文字を含む、バッファーにコピーされた文字数が設定されます。 |
| pName | LPWSTR | out | 名前空間の名前。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
解説(Remarks)
このメソッドは、pName に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puNameBufLength を 0 に設定して呼び出します。戻り時に、puNameBufLength は pName とその終端 NULL 文字に必要なバッファーの大きさを示します。
IWbemPath::RemoveNamespaceAt メソッドは、特定のインデックスにある名前空間を削除します。左端の名前空間のインデックス値は 0 (ゼロ) で、右に向かうにつれてインデックス値が大きくなります。
| uIndex | DWORD | in | 削除する名前空間の、0 から始まるインデックス値。 |
戻り値
このメソッドは、次のいずれかの値を持つ HRESULT を返します。
IWbemPath::RemoveAllNamespaces メソッドは、パスの名前空間部分を削除します。
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
IWbemPath::GetScopeCount メソッドは、パス内のスコープの数を返します。
| puCount | DWORD* | out | パス内のスコープの数。スコープが存在する場合、それは基本的にパスのクラス部分またはキー部分です。 |
戻り値
このメソッドは次の値を返します。
IWbemPath::SetScope メソッドは、インデックスに基づいてパス内のスコープを設定します。インデックスは常に 0 (ゼロ) であり、スコープはパスのクラス部分またはキー部分です。このメソッドはクラス名も設定します。
| uIndex | DWORD | in | スコープのインデックス。 |
| pszClass | LPWSTR | in | スコープのクラス名。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
| uIndex | DWORD | in | 設定するスコープのインデックスを指定する。 |
| pszText | LPWSTR | in | 当該スコープに設定する内容をテキスト形式で表した文字列である。 |
インデックスに基づいてスコープを取得します。
| uIndex | DWORD | in | スコープのインデックス。 |
| puClassNameBufSize | DWORD* | inout | 呼び出し元は、これをバッファーが保持できる文字数に設定します。成功すると、NULL 終端文字を含む、バッファーにコピーされた文字数が設定されます。 |
| pszClass | LPWSTR | out | スコープのコピー先となるバッファー。 |
| pKeyList | IWbemPathKeyList** | out | IWbemPathKeyList オブジェクトへのポインター。 |
戻り値
このメソッドは次の値を返します。
解説(Remarks)
このメソッドは、pszClass に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puClassNameBufSize を 0 に設定して呼び出します。戻り時に、puClassNameBufSize は pszClass とその終端 NULL 文字に必要なバッファーの大きさを示します。
インデックスに基づいて、スコープをテキスト形式で取得します。
| uIndex | DWORD | in | スコープのインデックス。 |
| puTextBufSize | DWORD* | inout | 呼び出し元は、これをバッファーが保持できる文字数に設定します。成功すると、NULL 終端文字を含む、バッファーにコピーされた文字数が設定されます。 |
| pszText | LPWSTR | out | スコープのコピー先となるバッファー。 |
戻り値
このメソッドは次の値を返します。
解説(Remarks)
このメソッドは、pszText に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puTextBufSize を 0 (ゼロ) に設定して呼び出します。戻り時に、puTextBufSize は pszText とその終端 NULL 文字に必要なバッファーの大きさを示します。
IWbemPath::RemoveScope メソッドは、インデックスに基づいてスコープを削除します。
| uIndex | DWORD | in | 削除するスコープのインデックス。 |
戻り値
このメソッドは、次のいずれかの値を持つ HRESULT を返します。
IWbemPath::RemoveAllScopes メソッドは、パスからすべてのスコープを削除します。
戻り値
このメソッドは、次に示す値のいずれかを持つ HRESULT を返します。
IWbemPath::SetClassName メソッドは、パスのクラス名部分を設定します。
| Name | LPWSTR | in | クラス名。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
IWbemPath::GetClassName メソッドは、パスからクラス名部分を取得します。
| puBuffLength | DWORD* | inout | 呼び出し元は、これをバッファーが保持できる文字数に設定します。成功すると、NULL 終端文字を含む、バッファーにコピーされた文字数が設定されます。 |
| pszName | LPWSTR | outoptional | クラス名のコピー先となるバッファー。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
解説(Remarks)
このメソッドは、pszName に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puBuffLength を 0 に設定して呼び出します。戻り時に、puBuffLength は pszName とその終端 NULL 文字に必要なバッファーの大きさを示します。
個々のキーにアクセスできるように、IWbemPathKeyList ポインターを取得します。
| pOut | IWbemPathKeyList** | out | IWbemPathKeyList オブジェクトへのポインター。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
パスのクラス部分またはキー部分を初期化します。
| lFlags | INT | in | 予約されています。0 (ゼロ) にする必要があります。 |
| Name | LPWSTR | in | 初期クラス名。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
IWbemPath::DeleteClassPart メソッドは、パスのクラス部分を削除します。
| lFlags | INT | in | 予約されています。0 (ゼロ) にする必要があります。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。
IWbemPath::IsRelative メソッドは、パーサーに既に設定されているパスが、特定のコンピューターおよび名前空間に対して相対的かどうかをテストします。
| wszMachine | LPWSTR | in | コンピューターの名前。 |
| wszNamespace | LPWSTR | in | テスト対象の名前空間。 |
戻り値
このメソッドは、パスが指定されたコンピューターおよび名前空間に対して相対的かどうかを示す BOOL を返します。
IWbemPath::IsRelativeOrChild メソッドは、パーサーに既に設定されているパスが、特定のコンピューターおよび名前空間に対して相対的であるか、またはその子であるかをテストします。
| wszMachine | LPWSTR | in | コンピューターの名前。 |
| wszNamespace | LPWSTR | in | テスト対象の名前空間。 |
| lFlags | INT | in | 予約されています。0 (ゼロ) にする必要があります。 |
戻り値
このメソッドは、パスが指定されたコンピューターおよび名前空間に対して相対的かどうかを示す BOOL を返します。
IWbemPath::IsLocal メソッドは、渡されたコンピューター名がパス内のコンピューター名と一致するかどうか、またはパス内のサーバー名が NULL もしくは "." であるかどうかをテストします。
| wszMachine | LPWSTR | in | テストするコンピューターの名前。 |
戻り値
このメソッドは、パスが渡されたコンピューター名と一致するかどうか、またはパス内のサーバー名が NULL もしくは "." であるかどうかを示す BOOL を返します。
IWbemPath::IsSameClassName メソッドは、渡されたクラス名がパス内のクラス名と一致するかどうかをテストします。このメソッドが TRUE を返すのは、パスに実際にクラス名が含まれている場合のみです。
| wszClass | LPWSTR | in | テストするクラス名。 |
戻り値
このメソッドは、クラス名がパス内のクラス名と一致するかどうかを示す BOOL を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWbemPath "{3BC15AF2-736C-477E-9E51-238AF8667DCC}" #usecom global IWbemPath IID_IWbemPath "{}" #comfunc global IWbemPath_SetText 3 int,wstr #comfunc global IWbemPath_GetText 4 int,var,var #comfunc global IWbemPath_GetInfo 5 int,var #comfunc global IWbemPath_SetServer 6 wstr #comfunc global IWbemPath_GetServer 7 var,var #comfunc global IWbemPath_GetNamespaceCount 8 var #comfunc global IWbemPath_SetNamespaceAt 9 int,wstr #comfunc global IWbemPath_GetNamespaceAt 10 int,var,var #comfunc global IWbemPath_RemoveNamespaceAt 11 int #comfunc global IWbemPath_RemoveAllNamespaces 12 #comfunc global IWbemPath_GetScopeCount 13 var #comfunc global IWbemPath_SetScope 14 int,wstr #comfunc global IWbemPath_SetScopeFromText 15 int,wstr #comfunc global IWbemPath_GetScope 16 int,var,var,sptr #comfunc global IWbemPath_GetScopeAsText 17 int,var,var #comfunc global IWbemPath_RemoveScope 18 int #comfunc global IWbemPath_RemoveAllScopes 19 #comfunc global IWbemPath_SetClassName 20 wstr #comfunc global IWbemPath_GetClassName 21 var,var #comfunc global IWbemPath_GetKeyList 22 sptr #comfunc global IWbemPath_CreateClassPart 23 int,wstr #comfunc global IWbemPath_DeleteClassPart 24 int #comfunc global IWbemPath_IsRelative 25 wstr,wstr #comfunc global IWbemPath_IsRelativeOrChild 26 wstr,wstr,int #comfunc global IWbemPath_IsLocal 27 wstr #comfunc global IWbemPath_IsSameClassName 28 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWbemPath "{3BC15AF2-736C-477E-9E51-238AF8667DCC}" #usecom global IWbemPath IID_IWbemPath "{}" #comfunc global IWbemPath_SetText 3 int,wstr #comfunc global IWbemPath_GetText 4 int,sptr,sptr #comfunc global IWbemPath_GetInfo 5 int,sptr #comfunc global IWbemPath_SetServer 6 wstr #comfunc global IWbemPath_GetServer 7 sptr,sptr #comfunc global IWbemPath_GetNamespaceCount 8 sptr #comfunc global IWbemPath_SetNamespaceAt 9 int,wstr #comfunc global IWbemPath_GetNamespaceAt 10 int,sptr,sptr #comfunc global IWbemPath_RemoveNamespaceAt 11 int #comfunc global IWbemPath_RemoveAllNamespaces 12 #comfunc global IWbemPath_GetScopeCount 13 sptr #comfunc global IWbemPath_SetScope 14 int,wstr #comfunc global IWbemPath_SetScopeFromText 15 int,wstr #comfunc global IWbemPath_GetScope 16 int,sptr,sptr,sptr #comfunc global IWbemPath_GetScopeAsText 17 int,sptr,sptr #comfunc global IWbemPath_RemoveScope 18 int #comfunc global IWbemPath_RemoveAllScopes 19 #comfunc global IWbemPath_SetClassName 20 wstr #comfunc global IWbemPath_GetClassName 21 sptr,sptr #comfunc global IWbemPath_GetKeyList 22 sptr #comfunc global IWbemPath_CreateClassPart 23 int,wstr #comfunc global IWbemPath_DeleteClassPart 24 int #comfunc global IWbemPath_IsRelative 25 wstr,wstr #comfunc global IWbemPath_IsRelativeOrChild 26 wstr,wstr,int #comfunc global IWbemPath_IsLocal 27 wstr #comfunc global IWbemPath_IsSameClassName 28 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。