Win32 API 日本語リファレンス
ホームSystem.Wmi › IWbemPath

IWbemPath

COM
IID3bc15af2-736c-477e-9e51-238af8667dcc継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IWbemPath インターフェイスは、オブジェクトパスパーサーの主要なインターフェイスであり、パスの解析を標準的な方法でプログラムから利用できるようにします。このインターフェイスは、パス情報を設定および取得するためのメインインターフェイスです。

メソッド 26

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

vtbl 3 HRESULT SetText(DWORD uMode, LPWSTR pszPath)

IWbemPath::SetText メソッドは、パスパーサーがパスの情報を返せるように、パスを解析します。

uModeDWORDin

受け入れるパスの種類を指定するフラグ。

WBEMPATH_CREATE_ACCEPT_RELATIVE

サーバー名のないパスを許可します。

WBEMPATH_CREATE_ACCEPT_ABSOLUTE

将来の使用のために予約されています。

WBEMPATH_CREATE_ACCEPT_ALL

空のパスの設定を許可します (これによりオブジェクトもクリアされます)。また、サーバー名のみを持つパスや、サーバー名を持たないパスも許可します。

WBEMPATH_TREAT_SINGLE_IDENT_AS_NS

"XYZ" のような単純なパスを名前空間として解釈します。

pszPathLPWSTRin解析するパス。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

vtbl 4 HRESULT GetText(INT lFlags, DWORD* puBuffLength, LPWSTR pszText)

IWbemPath::GetText メソッドは、あらかじめパーサーオブジェクトに設定されたパスのテキスト表現を返します。

lFlagsINTin

テキストをどのように返すかを制御するフラグ。

WBEMPATH_COMPRESSED

廃止されています。使用しないでください。

WBEMPATH_GET_RELATIVE_ONLY

相対パスを返します。サーバーと名前空間は省略されます。

WBEMPATH_GET_SERVER_TOO

サーバーと名前空間を含む、パス全体を返します。

WBEMPATH_GET_SERVER_AND_NAMESPACE_ONLY

パスのうちサーバーと名前空間の部分のみを返します。クラスまたはキーの部分は無視されます。

WBEMPATH_GET_NAMESPACE_ONLY

パスのうち名前空間の部分のみを返します。

WBEMPATH_GET_ORIGINAL

SetText メソッドで渡された内容をそのまま返します。

puBuffLengthDWORD*inout呼び出し元は、これを pszText のサイズに設定します。メソッドが成功すると、終端の null 文字を含む、使用されたワイド文字数が puBufferLength に設定されます。
pszTextLPWSTRoutパスのテキスト表現。

戻り値

このメソッドは次の値を返します。

vtbl 5 HRESULT GetInfo(DWORD uRequestedInfo, ULONGLONG* puResponse)

IWbemPath::GetInfo メソッドは、パーサーオブジェクトに設定されたパスに関する詳細情報を返します。

uRequestedInfoDWORDin将来の使用のために予約されています。0 (ゼロ) にする必要があります。
puResponseULONGLONG*out

成功した場合、このビットマップには次の一覧のビットが 0 個以上設定されます。

WBEMPATH_INFO_ANON_LOCAL_MACHINE

パスのサーバー名が "." または NULL です。

WBEMPATH_INFO_HAS_MACHINE_NAME

パスにサーバー名が指定されており、その名前が "." ではありません。

WBEMPATH_INFO_IS_CLASS_REF

パスにクラス部分がありますが、インスタンスではありません。

WBEMPATH_INFO_IS_INST_REF

パスにクラス部分があり、キー値もあります。

WBEMPATH_INFO_HAS_SUBSCOPES

パスにサブスコープが存在します。現在、WMI はスコープをサポートしていません。

WBEMPATH_INFO_IS_COMPOUND

複合キーが使用されています。

WBEMPATH_INFO_HAS_V2_REF_PATHS

1 つ以上のキーが CIM 参照を持っています。

WBEMPATH_INFO_HAS_IMPLIED_KEY

パスのどこかでキー名が省略されています。

WBEMPATH_INFO_CONTAINS_SINGLETON

1 つ以上のシングルトンがあります。

WBEMPATH_INFO_V1_COMPLIANT

スコープも CIM_REFERENCE キーもありません。

WBEMPATH_INFO_V2_COMPLIANT

予約されています。使用しないでください。

WBEMPATH_INFO_CIM_COMPLIANT

予約されています。使用しないでください。

WBEMPATH_INFO_IS_SINGLETON

オブジェクトはシングルトンです。

WBEMPATH_INFO_IS_PARENT

パスが ".." だけです。

WBEMPATH_INFO_SERVER_NAMESPACE_ONLY

パスにクラス部分がありません。

WBEMPATH_INFO_NATIVE_PATH

パスパーサーが SetText を使用して初期化されました。

WBEMPATH_INFO_WMI_PATH

予約されています。使用しないでください。

WBEMPATH_INFO_PATH_HAD_SERVER

サーバー名が SetText または SetServer のいずれかによって設定されました。

戻り値

このメソッドは次のいずれかの値を返します。

vtbl 6 HRESULT SetServer(LPWSTR Name)

IWbemPath::SetServer メソッドは、パスのサーバー部分を設定します。

NameLPWSTRin新しいサーバー名。NULL も指定できます。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

vtbl 7 HRESULT GetServer(DWORD* puNameBufLength, LPWSTR pName)

IWbemPath::GetServer メソッドは、パスのサーバー部分を取得します。

puNameBufLengthDWORD*inout入力時は、pszName が指すバッファーのサイズ (文字数) です。戻り時は、NULL 終端文字を含むサーバー名の文字数になります。
pNameLPWSTRoutサーバー名。

戻り値

このメソッドは次の値を返します。

解説(Remarks)

このメソッドは、pszName に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puNameBufLength を 0 (ゼロ) に設定して呼び出します。戻り時に、puNameBufLengthpszName とその終端 NULL 文字に必要なバッファーの大きさを示します。

vtbl 8 HRESULT GetNamespaceCount(DWORD* puCount)

IWbemPath::GetNamespaceCount メソッドは、パス内の名前空間の数を返します。

puCountDWORD*outパス内の名前空間の数。

戻り値

このメソッドは、次のいずれかの値を持つ HRESULT を返します。

vtbl 9 HRESULT SetNamespaceAt(DWORD uIndex, LPWSTR pszName)

IWbemPath::SetNamespace メソッドは、0 から始まるインデックスによってパス内での位置を指定し、名前空間を設定します。

uIndexDWORDin名前空間を配置する位置のインデックス。パスの左端の名前空間がインデックス 0 (ゼロ) で、右に向かうにつれてインデックス値が大きくなります。指定できる最大値は現在の名前空間の数です。名前空間のインデックスは 0 から始まるため、その値を指定すると末尾に名前空間が追加されます。
pszNameLPWSTRin名前空間の名前。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

vtbl 10 HRESULT GetNamespaceAt(DWORD uIndex, DWORD* puNameBufLength, LPWSTR pName)

インデックスに基づいて名前空間を取得します。

uIndexDWORDin読み取る名前空間のインデックス。パスの左端の名前空間がインデックス 0 で、右に向かうにつれてインデックス値が大きくなります。指定できる最大値は、現在の名前空間の数から 1 を引いた値です。
puNameBufLengthDWORD*inout呼び出し元は、これをバッファーが保持できる文字数に設定します。成功すると、NULL 終端文字を含む、バッファーにコピーされた文字数が設定されます。
pNameLPWSTRout名前空間の名前。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

解説(Remarks)

このメソッドは、pName に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puNameBufLength を 0 に設定して呼び出します。戻り時に、puNameBufLengthpName とその終端 NULL 文字に必要なバッファーの大きさを示します。

vtbl 11 HRESULT RemoveNamespaceAt(DWORD uIndex)

IWbemPath::RemoveNamespaceAt メソッドは、特定のインデックスにある名前空間を削除します。左端の名前空間のインデックス値は 0 (ゼロ) で、右に向かうにつれてインデックス値が大きくなります。

uIndexDWORDin削除する名前空間の、0 から始まるインデックス値。

戻り値

このメソッドは、次のいずれかの値を持つ HRESULT を返します。

vtbl 12 HRESULT RemoveAllNamespaces()

IWbemPath::RemoveAllNamespaces メソッドは、パスの名前空間部分を削除します。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

vtbl 13 HRESULT GetScopeCount(DWORD* puCount)

IWbemPath::GetScopeCount メソッドは、パス内のスコープの数を返します。

puCountDWORD*outパス内のスコープの数。スコープが存在する場合、それは基本的にパスのクラス部分またはキー部分です。

戻り値

このメソッドは次の値を返します。

vtbl 14 HRESULT SetScope(DWORD uIndex, LPWSTR pszClass)

IWbemPath::SetScope メソッドは、インデックスに基づいてパス内のスコープを設定します。インデックスは常に 0 (ゼロ) であり、スコープはパスのクラス部分またはキー部分です。このメソッドはクラス名も設定します。

uIndexDWORDinスコープのインデックス。
pszClassLPWSTRinスコープのクラス名。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

vtbl 15 HRESULT SetScopeFromText(DWORD uIndex, LPWSTR pszText)
uIndexDWORDin設定するスコープのインデックスを指定する。
pszTextLPWSTRin当該スコープに設定する内容をテキスト形式で表した文字列である。
vtbl 16 HRESULT GetScope(DWORD uIndex, DWORD* puClassNameBufSize, LPWSTR pszClass, IWbemPathKeyList** pKeyList)

インデックスに基づいてスコープを取得します。

uIndexDWORDinスコープのインデックス。
puClassNameBufSizeDWORD*inout呼び出し元は、これをバッファーが保持できる文字数に設定します。成功すると、NULL 終端文字を含む、バッファーにコピーされた文字数が設定されます。
pszClassLPWSTRoutスコープのコピー先となるバッファー。
pKeyListIWbemPathKeyList**outIWbemPathKeyList オブジェクトへのポインター。

戻り値

このメソッドは次の値を返します。

解説(Remarks)

このメソッドは、pszClass に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puClassNameBufSize を 0 に設定して呼び出します。戻り時に、puClassNameBufSizepszClass とその終端 NULL 文字に必要なバッファーの大きさを示します。

vtbl 17 HRESULT GetScopeAsText(DWORD uIndex, DWORD* puTextBufSize, LPWSTR pszText)

インデックスに基づいて、スコープをテキスト形式で取得します。

uIndexDWORDinスコープのインデックス。
puTextBufSizeDWORD*inout呼び出し元は、これをバッファーが保持できる文字数に設定します。成功すると、NULL 終端文字を含む、バッファーにコピーされた文字数が設定されます。
pszTextLPWSTRoutスコープのコピー先となるバッファー。

戻り値

このメソッドは次の値を返します。

解説(Remarks)

このメソッドは、pszText に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puTextBufSize を 0 (ゼロ) に設定して呼び出します。戻り時に、puTextBufSizepszText とその終端 NULL 文字に必要なバッファーの大きさを示します。

vtbl 18 HRESULT RemoveScope(DWORD uIndex)

IWbemPath::RemoveScope メソッドは、インデックスに基づいてスコープを削除します。

uIndexDWORDin削除するスコープのインデックス。

戻り値

このメソッドは、次のいずれかの値を持つ HRESULT を返します。

vtbl 19 HRESULT RemoveAllScopes()

IWbemPath::RemoveAllScopes メソッドは、パスからすべてのスコープを削除します。

戻り値

このメソッドは、次に示す値のいずれかを持つ HRESULT を返します。

vtbl 20 HRESULT SetClassName(LPWSTR Name)

IWbemPath::SetClassName メソッドは、パスのクラス名部分を設定します。

NameLPWSTRinクラス名。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

vtbl 21 HRESULT GetClassName(DWORD* puBuffLength, LPWSTR pszName)

IWbemPath::GetClassName メソッドは、パスからクラス名部分を取得します。

puBuffLengthDWORD*inout呼び出し元は、これをバッファーが保持できる文字数に設定します。成功すると、NULL 終端文字を含む、バッファーにコピーされた文字数が設定されます。
pszNameLPWSTRoutoptionalクラス名のコピー先となるバッファー。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

解説(Remarks)

このメソッドは、pszName に必要なバッファーサイズを調べるために使用できます。そのためには、バッファーに NULL ポインターを渡し、puBuffLength を 0 に設定して呼び出します。戻り時に、puBuffLengthpszName とその終端 NULL 文字に必要なバッファーの大きさを示します。

vtbl 22 HRESULT GetKeyList(IWbemPathKeyList** pOut)

個々のキーにアクセスできるように、IWbemPathKeyList ポインターを取得します。

pOutIWbemPathKeyList**outIWbemPathKeyList オブジェクトへのポインター。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

vtbl 23 HRESULT CreateClassPart(INT lFlags, LPWSTR Name)

パスのクラス部分またはキー部分を初期化します。

lFlagsINTin予約されています。0 (ゼロ) にする必要があります。
NameLPWSTRin初期クラス名。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

vtbl 24 HRESULT DeleteClassPart(INT lFlags)

IWbemPath::DeleteClassPart メソッドは、パスのクラス部分を削除します。

lFlagsINTin予約されています。0 (ゼロ) にする必要があります。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。

vtbl 25 BOOL IsRelative(LPWSTR wszMachine, LPWSTR wszNamespace)

IWbemPath::IsRelative メソッドは、パーサーに既に設定されているパスが、特定のコンピューターおよび名前空間に対して相対的かどうかをテストします。

wszMachineLPWSTRinコンピューターの名前。
wszNamespaceLPWSTRinテスト対象の名前空間。

戻り値

このメソッドは、パスが指定されたコンピューターおよび名前空間に対して相対的かどうかを示す BOOL を返します。

vtbl 26 BOOL IsRelativeOrChild(LPWSTR wszMachine, LPWSTR wszNamespace, INT lFlags)

IWbemPath::IsRelativeOrChild メソッドは、パーサーに既に設定されているパスが、特定のコンピューターおよび名前空間に対して相対的であるか、またはその子であるかをテストします。

wszMachineLPWSTRinコンピューターの名前。
wszNamespaceLPWSTRinテスト対象の名前空間。
lFlagsINTin予約されています。0 (ゼロ) にする必要があります。

戻り値

このメソッドは、パスが指定されたコンピューターおよび名前空間に対して相対的かどうかを示す BOOL を返します。

vtbl 27 BOOL IsLocal(LPWSTR wszMachine)

IWbemPath::IsLocal メソッドは、渡されたコンピューター名がパス内のコンピューター名と一致するかどうか、またはパス内のサーバー名が NULL もしくは "." であるかどうかをテストします。

wszMachineLPWSTRinテストするコンピューターの名前。

戻り値

このメソッドは、パスが渡されたコンピューター名と一致するかどうか、またはパス内のサーバー名が NULL もしくは "." であるかどうかを示す BOOL を返します。

vtbl 28 BOOL IsSameClassName(LPWSTR wszClass)

IWbemPath::IsSameClassName メソッドは、渡されたクラス名がパス内のクラス名と一致するかどうかをテストします。このメソッドが TRUE を返すのは、パスに実際にクラス名が含まれている場合のみです。

wszClassLPWSTRinテストするクラス名。

戻り値

このメソッドは、クラス名がパス内のクラス名と一致するかどうかを示す BOOL を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 指定が可能。