Registering a SIP Application (Unmanaged Code)

This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.

Registering a SIP Application (Unmanaged Code)

The following code sample demonstrates how to register a SIP application from unmanaged COM code.

    CComPtr<IWbemServices>      spIServices;

    // Get the IWbemServices pointer (connect to WMI ...).

    // Create a new instance of the MSFT_SIPApplicationSetting class.

    CComBSTR sbstrClassName(L"MSFT_SIPApplicationSetting");
    CComPtr<IWbemClassObject> spIWbemClassObject;
    HRESULT hr = spIServices->GetObject(sbstrClassName,
        WBEM_FLAG_RETURN_WBEM_COMPLETE, NULL, &spIWbemClassObject;, NULL);
    if (FAILED(hr))
    {
        return hr;
    }
    CComPtr<IWbemClassObject> spApplicationSettingObject;
    hr = spIWbemClassObject->SpawnInstance(0, &spApplicationSettingObject;);
    if (FAILED(hr))
    {
        return hr;
    }

    // Set the attributes for the instance that was created.
    // Create a unique instance ID.

    OLECHAR oleszTemp[39] = {0};
    GUID guid;
    hr = CoCreateGuid(&guid;);
    if (FAILED(hr))
    {
        return hr;
    }

  // Set the 'InstanceID' field to the unique GUID value that was created.

    StringFromGUID2(guid, oleszTemp, sizeof(oleszTemp) / sizeof(OLECHAR));
    CComVariant svarGuid(oleszTemp);
    hr = spApplicationSettingObject->Put(L"InstanceID", 0, svarGuid);
    if (FAILED(hr))
    {
        return hr;
    }

    // Set the 'Name' field.

    CComVariant svarName(L"NameValue");
    hr = spApplicationSettingObject->Put(L"Name", 0, svarName);
    if (FAILED(hr))
    {
        return hr;
    }

    // Set the 'URI' field.

    CComVariant svarURI(L"URIValue");
    hr = spApplicationSettingObject->Put(L"URI", 0, svarURI);
    if (FAILED(hr))
    {
        return hr;
    }

    // Set the 'Enabled' field.

    CComVariant svarEnabled(true);
    hr = spApplicationSettingObject->Put(L"Enabled", 0, svarEnabled);
    if (FAILED(hr))
    {
        return hr;
    }

    // Set the 'Critical' field.

    CComVariant svarCritical(false);
    hr = spApplicationSettingObject->Put(L"Critical", 0, svarCritical);
    if (FAILED(hr))
    {
        return hr;
    }

    // Set the 'ScriptPath' field.

    // (only needs to be set for scriptis NULL for non-script applications)
    CComVariant svarScriptPath(L"ScriptPathValue");
    hr = spApplicationSettingObject->Put(L"ScriptPath", 0, svarScriptPath);
    if (FAILED(hr))
    {
        return hr;
    }

    // Commit the new instance to WMI.

    hr = spIServices->PutInstance(spApplicationSettingObject,
        WBEM_FLAG_CREATE_OR_UPDATE, NULL, NULL);
    if (FAILED(hr))
    {
        return hr;
    }