CM_Query_And_Remove_SubTree_ExW関数 (cfgmgr32.h)
[Windows 8とWindows Server 2012以降、この関数は非推奨になりました。 代わりに CM_Query_And_Remove_SubTree を使用してください。]
CM_Query_And_Remove_SubTree_Ex関数は、デバイス インスタンスとその子を削除できるかどうかを確認し、削除できる場合は削除します。
構文
CMAPI CONFIGRET CM_Query_And_Remove_SubTree_ExW(
[in] DEVINST dnAncestor,
[out, optional] PPNP_VETO_TYPE pVetoType,
[out, optional] LPWSTR pszVetoName,
[in] ULONG ulNameLength,
[in] ULONG ulFlags,
[in, optional] HMACHINE hMachine
);
パラメーター
[in] dnAncestor
削除するサブツリーのルートにあるデバイスに対する呼び出し元指定のデバイス インスタンス ハンドル。 このデバイス インスタンス ハンドルは、 hMachine によって提供されるマシン ハンドルにバインドされます。
[out, optional] pVetoType
(省略可能)呼び出し元が NULL を 渡せず、削除要求が拒否された場合 (つまり、関数はCR_REMOVE_VETOEDを返します)、 では、拒否権の理由を示す PNP_VETO_TYPE型指定の値が返されます。
[out, optional] pszVetoName
(省略可能)呼び出し元が NULL を 渡せず、削除要求が拒否された場合 (つまり、関数はCR_REMOVE_VETOEDを返します)、この値は拒否型に関連付けられているテキスト文字列を指します。 この文字列が提供する情報の種類は、 pVetoType によって受け取られた値によって異なります。 これらの文字列の詳細については、「 PNP_VETO_TYPE」を参照してください。
[in] ulNameLength
(省略可能)。) pszVetoName によって提供される文字列バッファーの長さ (文字数) を表す呼び出し元指定の値。 これはMAX_PATHに設定する必要があります。
[in] ulFlags
「 解説 」セクションで説明されている呼び出し元が指定したフラグ定数のビットごとの OR。
[in, optional] hMachine
呼び出し元が指定したデバイス インスタンス ハンドルがバインドされている呼び出し元指定のマシン ハンドル。
戻り値
操作が成功した場合、関数はCR_SUCCESSを返します。 それ以外の場合は、 Cfgmgr32.h で定義されているCR_プレフィックス付きのエラー コードのいずれかを返します。
注釈
CM_Query_And_Remove_SubTree_Ex機能の目的は、アプリケーションがリモート コンピューターから安全に取り外せるようにデバイスを準備できるようにすることです。 ドライバーが DEVICE_CAPABILITIES の SurpriseRemovalOK メンバーを設定していない場合にのみ、この関数を使用してデバイス を削除します。 ドライバーが SurpriseRemovalOK を設定している場合、アプリケーションはCM_Query_And_Remove_SubTree_ExではなくCM_Request_Device_Eject_Exを呼び出す必要があります。
CM_Query_And_Remove_SubTree_Ex では、次の 2 つのフラグのいずれかを使用して flags パラメーター ulFlags を設定できます。これらのフラグは、Windows またはインストーラーがデバイスの削除を拒否した場合にのみ適用されます。
Windows XP 以降では、 CM_Query_And_Remove_SubTree_Ex では次の追加フラグの設定もサポートされています。このフラグは、関数がデバイス インスタンスを正常に削除した場合にのみ適用されます。
CM_Query_And_Remove_SubTree_Exの低レベル操作を必要としないデバイス インストール アプリケーションでは、CM_Query_And_Remove_SubTree_Exを使用してデバイスを削除するのではなく、DIF_PROPERTYCHANGE要求を使用してデバイスを無効にする必要があります。 DIF_PROPERTYCHANGE要求は、デバイスのプロパティを有効、無効、再起動、停止、または変更するために使用できます。
この関数の呼び出し元には SeLoadDriverPrivilege が必要です。 (特権については、Microsoft Windows SDKドキュメントを参照してください。
ローカルまたはリモート コンピューターにバインドされているデバイス インスタンス ハンドルの使用については、「 CM_Get_Child_Ex」を参照してください。
リモート マシンにアクセスする機能は、Windows 8およびWindows Server 2012以降のオペレーティング システムで削除されているため、これらのバージョンの Windows で実行している場合はリモート マシンにアクセスできません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Microsoft Windows 2000 以降のバージョンの Windows で使用できます。 |
対象プラットフォーム | デスクトップ |
Header | cfgmgr32.h (Cfgmgr32.h を含む) |
Library | Cfgmgr32.lib |