Creating the Root Object in C++
It is recommended that you use native Component Object Model (COM) support (using the #import compiler directive) when programming with the fax objects in C++. For more information, see Fax Extended COM Visual C++ Programming.
If you use native COM support, create the root object in C++ using the following code:
hr = sipFaxServer.CreateInstance("FaxComEx.FaxServer");
The following code examples demonstrate how to create the root objects if you do not use native COM support.
FaxServer Object
#include <windows.h>
#include <faxcomex.h>
#include <faxcomex_i.c>
#include <tchar.h>
int main (int argc, TCHAR *argv[])
{
HRESULT hr;
IFaxServer *pIFaxServer = NULL;
IUnknown *pIUnknown = NULL;
hr = CoInitialize (NULL);
if (FAILED(hr))
{
//
// handle failure
//
return 1;
}
__try
{
hr = CoCreateInstance (CLSID_FaxServer,
NULL,
CLSCTX_LOCAL_SERVER |
CLSCTX_INPROC_HANDLER |
CLSCTX_INPROC_SERVER,
__uuidof(IUnknown),
reinterpret_cast<void**>(&pIUnknown));
if (FAILED(hr))
{
//
// handle failure
//
return 1;
}
hr = pIUnknown->QueryInterface(IID_IFaxServer,
reinterpret_cast<void**>(&pIFaxServer));
if (FAILED(hr))
{
//
// handle failure
//
return 1;
}
//
// Use the IFaxServer object
//
}
__finally
{
if (pIUnknown)
{
pIUnknown->Release();
}
if (pIFaxServer)
{
pIFaxServer->Release();
}
CoUninitialize();
}
return 0;
}
FaxDocument Object
#include <windows.h>
#include <faxcomex.h>
#include <faxcomex_i.c>
#include <tchar.h>
int main (int argc, TCHAR *argv[])
{
HRESULT hr;
IFaxDocument *pIFaxDocument = NULL;
IUnknown *pIUnknown = NULL;
hr = CoInitialize (NULL);
if (FAILED(hr))
{
//
// handle failure
//
return 1;
}
__try
{
hr = CoCreateInstance (CLSID_FaxDocument,
NULL,
CLSCTX_LOCAL_SERVER |
CLSCTX_INPROC_HANDLER |
CLSCTX_INPROC_SERVER,
__uuidof(IUnknown),
reinterpret_cast<void**>(&pIUnknown));
if (FAILED(hr))
{
//
// handle failure
//
return 1;
}
hr = pIUnknown->QueryInterface(IID_IFaxDocument,
reinterpret_cast<void**>(&pIFaxDocument));
if (FAILED(hr))
{
//
// handle failure
//
return 1;
}
//
// Use the IFaxDocument object
//
}
__finally
{
if (pIUnknown)
{
pIUnknown->Release();
}
if (pIFaxDocument)
{
pIFaxDocument->Release();
}
CoUninitialize();
}
return 0;
}