Share via


INmManager

The INmManager interface represents the overall NetMeeting conference manager. The conference manager initializes the NetMeeting run time for its environment and controls how the underlying NetMeeting functionality interacts with NetMeeting client software.

When to Implement

You do not need to implement this interface because the NetMeeting run time provides the INmManager implementation on the Conference Manager object. You do need to implement the corresponding event handler methods for INmManagerNotify.

When to Use

Use the INmManager interface methods to access and manage information concerning the overall conference. The conference manager is in charge of the conference and can perform the following actions.

  • Launch NetMeeting and manage the overall conference session, including replacement of the NetMeeting user interface with a custom interface and registration for specific event notifications.
  • Create, manage, and list incoming and outgoing calls.
  • Create, manage and list conferences.
  • Join existing conferences.
  • Retrieve system information from the local computer.
  • Influence how data is distributed among the conference members through its inherent position in the conference topology.

Methods in Vtable Order

IUnknown methods Description
QueryInterface Retrieves pointers to supported interfaces.
AddRef Increments the reference count.
Release Decrements the reference count.
INmManager methods Description
Initialize Activates and registers the Conference Manager object with conferencing services. See the sample code that follows this table.
GetSysInfo Retrieves local user and system information.
EnumConference Lists current conferences in progress. Use this to determine if there is already a conference in progress before you start a new one.
CreateConference Creates a new conference on the local system.
EnumCall Lists calls in progress.
CreateCall Creates a new call and adds it to the existing conference on the local system.
CallConference Calls an existing conference by name on the local system.

Remarks

To create this object, use CoCreateInstance with the predefined class identifier CLSID_NmManager and interface identifier IID_INmManager to retrieve an INmManager interface pointer on the conference manager object. In addition, connect up the INmManagerNotify event sink as shown in the sample code below.

Example

The following C++ sample shows how to initialize NetMeeting from an application.

HRESULT InitializeNetMeeting()
{
    HRESULT  hr = S_OK;
    ULONG  ulOptions = NM_INIT_BACKGROUND;
    ULONG  ulCaps = 0;

    INmManagerNotify* pINmManagerNotify = NULL;

    //
    // Create the NmManager object
    //
    hr = CoCreateInstance(CLSID_NmManager, NULL, CLSCTX_INPROC_SERVER, IID_INmManager, (void**)&g_pINmManager);
    if (FAILED(hr))
    {
        _tprintf(_T("CoCreateInstance failed, hr = 0x%08X\n"), hr);
        goto Exit;
    }

    //
    // Create a sink for the NmManagerNotify events.
    // Note: CNMNotify implements the INmManagerNotify 
    // interface
    //
    g_pNmManagerNotify = new CNMNotify();
    if (NULL == g_pNmManagerNotify)
    {
        _tprintf(_T("Could not create a CNMNotify class\n"));
        goto Exit;
    }

    //
    // QueryInterface for the INmManagerNotify interface
    // from the CNMNotify class
    //
    hr = g_pNmManagerNotify->QueryInterface(IID_INmManagerNotify, (void**)&pINmManagerNotify);
    if (FAILED(hr))
    {
        _tprintf(_T("Cannot QI for INmManagerNotify, hr = 0x%08X\n"), hr);
        goto Exit;
    }

    //
    // Use AtlAdvise to connect the g_pINmManager event source to the 
    // pINmManagerNotify event sink
    //
    hr = AtlAdvise((IUnknown*)g_pINmManager, (IUnknown*)pINmManagerNotify, IID_INmManagerNotify, &g_dwCookie);
    if (FAILED(hr))
    {
        _tprintf(_T("AtlAdvise failed, hr = 0x%08X\n"), hr);
        goto Exit;
    }

    //
    // Call Initialize on the INmManager interface
    //
    hr = g_pINmManager->Initialize(&ulOptions, &ulCaps);
    if (FAILED(hr))
    {
        _tprintf(_T("QueryInterface for IID_INmManager failed, hr = 0x%08X\n"), hr);
        goto Exit;
    }

Exit:
    if (pINmManagerNotify != NULL)
    {
        pINmManagerNotify->Release();
        pINmManagerNotify = NULL;
    }

    return hr;
}

Requirements

**  Windows NT/2000:** Requires Windows NT 4.0 SP3 or later.
**  Windows 95/98:** Requires Windows 95 or later. Available as a redistributable for Windows 95.
**  Header:** Imsconf2.idl.

See Also

INmManagerNotify