IWbemEventSink::SetSinkSecurity メソッド (wbemprov.h)
IWbemEventSink::SetSinkSecurity メソッドは、通過するすべてのイベントのシンクにセキュリティ記述子 (SD) を設定するために使用されます。 WMI は、SD に基づいてアクセス チェックを処理します。 プロバイダーがイベントの使用を許可されているユーザーを制御できないが、特定のシンクの SD を設定できる場合は、このメソッドを使用します。
構文
HRESULT SetSinkSecurity(
[in] long lSDLength,
[in] BYTE *pSD
);
パラメーター
[in] lSDLength
セキュリティ記述子の長さ。
[in] pSD
セキュリティ記述子、DACL。
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。 次の一覧は、 HRESULT に含まれる値の一覧です。
解説
SD DACL は、イベントにアクセスできるユーザーを定義します。 シンクに配信されるイベントへのアクセスを求めるコンシューマーのアクセス制御エントリ (ACE) は、pSD パラメーターに設定されたWBEM_RIGHT_SUBSCRIBEを持つ ACE と一致する必要があります。 SD 所有者とグループは、イベントの発生時に使用する ID を指定します。 この ID は、イベントを発生させるアカウントの ID とは異なる場合があります。ただし、フィルター SD に対してイベントのアクセスを確認する場合は、ユーザーの ID と所有者フィールドで指定された ID の両方がアクセスを確認します。 詳細については、__EventFilter クラスの EventAccess プロパティを参照してください。 SD のグループ フィールドを設定する必要があり、SACL フィールドは使用されません。 イベント セキュリティの詳細と、このメソッドを使用するタイミングについては、「 WMI イベントのセキュリティ保護」を参照してください。
イベントの提供の詳細については、「イベント プロバイダーの作成」を参照してください。
例
次のコード例では、シンクを介して提供されるすべてのイベントの SD を設定します。このコードには、次の #include ステートメントと参照が必要です。
#define _WIN32_WINNT 0x0500
#define SECURITY_WIN32
#pragma comment(lib, "wbemuuid.lib")
#pragma comment(lib, "Secur32.lib")
#include <windows.h>
#include <sddl.h>
#include <wbemidl.h>
#include <security.h>
#include <iostream>
using namespace std;
HRESULT CMyEventProvider::ProvideEvents( IWbemObjectSink *pSink,
long lFlags )
{
IWbemEventSink *pEventSink = NULL;
//Create SD with allowing only administrators
// to receive events. O:BAG:BAD:(A;;0x40;;;BA)
long lMask = WBEM_RIGHT_SUBSCRIBE;
WCHAR wBuf[MAX_PATH];
_ltow( lMask, wBuf, 16 );
wstring wstrSD = L"O:BAG:BAD:(A;;0x";
wstrSD += lMask;
wstrSD += L";;;BA)";
ULONG ulSize = 0;
PSECURITY_DESCRIPTOR pSD = NULL;
ConvertStringSecurityDescriptorToSecurityDescriptorW(
wstrSD.c_str(), SDDL_REVISION_1, &pSD, &ulSize );
HRESULT hRes = pSink->QueryInterface( IID_IWbemEventSink,
(void**)pEventSink );
if( SUCCEEDED(hRes) )
hRes = pEventSink->SetSinkSecurity( ulLength, pSD );
LocalFree(pSD );
return hRes;
}
要件
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | wbemprov.h (Wbemidl.h を含む) |
Library | Wbemuuid.lib |
[DLL] | Wbemsvc.dll |