Share via


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 포함)
라이브러리 Wbemuuid.lib
DLL Wbemsvc.dll