指定したクエリ パラメーターとオブジェクト ID に基づいてプロパティを取得するデバイス クエリを作成します。
構文
HRESULT DevCreateObjectQueryFromId(
[in] DEV_OBJECT_TYPE ObjectType,
[in] PCWSTR pszObjectId,
[in] ULONG QueryFlags,
[in] ULONG cRequestedProperties,
[in, optional] const DEVPROPCOMPKEY *pRequestedProperties,
[in] ULONG cFilterExpressionCount,
[in, optional] const DEVPROP_FILTER_EXPRESSION *pFilter,
[in] PDEV_QUERY_RESULT_CALLBACK pCallback,
[in, optional] PVOID pContext,
[out] PHDEVQUERY phDevQuery
);
パラメーター
[in] ObjectType
このクエリが操作する必要があるオブジェクトの種類を決定する DEV_OBJECT_TYPE 列挙体の値。
[in] pszObjectId
クエリが操作する必要があるオブジェクトの文字列識別子。
[in] QueryFlags
ビットごとの OR 演算を使用して結合される DEV_QUERY_FLAGS 値の組み合わせ。
[in] cRequestedProperties
pRequestedPropertiesで提供される DEVPROPCOMPKEY 構造体の数。 DevQueryFlagAllProperties
[in, optional] pRequestedProperties
必要に応じて、pCallback
DEVPROPCOMPKEY 構造体の LocaleName フィールドは無視され、NULL に設定する必要があります。
cRequestedProperties が 0 の場合、これは NULL である必要があります。
[in] cFilterExpressionCount
pFilterで提供される DEVPROP_FILTER_EXPRESSION 構造体の数。
[in, optional] pFilter
必要に応じて、クエリの結果セットに含めるオブジェクトのフィルター条件を指定する DEVPROP_FILTER_EXPRESSION 構造体の配列を提供します。 cFilterExpressionCount
[in] pCallback
このクエリの結果を送信する必要がある PDEV_QUERY_RESULT_CALLBACK コールバック関数。
[in, optional] pContext
呼び出し元が指定したコンテキスト。 この値は、変更されていないコールバック関数に渡されます。
[out] phDevQuery
クエリを表すハンドルを受け取るポインター。 devQueryFlagsUpdateResults
戻り値
クエリが正常に作成された場合、S_OKが返されます。それ以外の場合は、適切なエラー値。
備考
クライアントが ID を指定して特定のオブジェクトに関するデータを取得する場合は、フィルターで DevCreateObjectQuery を
詳細については、この関数にも適用 DevCreateObjectQueryの解説セクションを参照してください。
例
次の例では、PDEV_QUERY_RESULT_CALLBACK メソッドを実装して、クエリの状態が変更されたとき、項目がクエリ結果に追加、更新、または削除されたときに、ステータス メッセージを出力します。 次に、
void WINAPI
Example1Callback(
HDEVQUERY hDevQuery,
PVOID pContext,
const DEV_QUERY_RESULT_ACTION_DATA *pActionData
)
{
UNREFERENCED_PARAMETER(hDevQuery);
UNREFERENCED_PARAMETER(pContext);
switch (pActionData->Action)
{
case DevQueryResultStateChange:
if (pActionData->Data.State == DevQueryStateEnumCompleted)
{
wprintf(L"Enumeration of current system state complete.\n");
}
else if (pActionData->Data.State == DevQueryStateAborted)
{
wprintf(L"Query has aborted. No further results will be received.\n");
// Communicate back to the creator of the query that it has aborted
// so it can handle that appropriately, such as by recreating the
// query
}
break;
case DevQueryResultAdd:
wprintf(L"Object '%ws' has been added to the result set.\n",
pActionData->Data.DeviceObject.pszObjectId);
break;
case DevQueryResultUpdate:
wprintf(L"Object '%ws' was updated.\n",
pActionData->Data.DeviceObject.pszObjectId);
break;
case DevQueryResultRemove:
wprintf(L"Object '%ws' has been removed from the result set.\n",
pActionData->Data.DeviceObject.pszObjectId);
break;
}
}
void
Example1(PCWSTR InterfacePath)
{
DEVPROPCOMPKEY RequestedProperties[] =
{
{ DEVPKEY_DeviceInterface_Enabled, DEVPROP_STORE_SYSTEM, NULL },
{ DEVPKEY_DeviceInterface_FriendlyName, DEVPROP_STORE_SYSTEM, NULL }
};
HDEVQUERY hDevQuery = NULL;
HRESULT hr = DevCreateObjectQueryFromId(DevObjectTypeDeviceInterface,
InterfacePath,
DevQueryFlagUpdateResults,
RTL_NUMBER_OF(RequestedProperties),
RequestedProperties,
0,
NULL,
Example1Callback,
NULL,
&hDevQuery);
if (FAILED(hr))
{
wprintf(L"Failed to create query. hr = 0x%08x\n", hr);
goto exit;
}
// do other work while the query monitors system state in the background
exit:
if (hDevQuery != NULL)
{
DevCloseObjectQuery(hDevQuery);
}
return;
}
必要条件
| 要件 | 価値 |
|---|---|
| サポートされる最小クライアント | Windows 10 バージョン 1809 |
| ヘッダー | devquery.h |
| ライブラリ | Onecore.lib |
| DLL | Cfgmgr32.dll |
関連項目
DevCreateObjectQuery の