ISpResourceManager::GetObject (Microsoft Speech Platform)

Microsoft Speech Platform SDK 11

Microsoft Speech Platform

ISpResourceManager::GetObject

ISpResourceManager::GetObject retrieves a service object from the current service list, or creates one if it does not exist.

HRESULT GetObject(
   REFGUID    guidServiceId,
   REFCLSID   ObjectCLSID,
   REFIID     ObjectIID,
   BOOL       fReleaseWhenNoRefs,
   void     **ppObject
);

Parameters

guidServiceId
[in] The unique identifier of the service.
ObjectCLSID
[in] Class identifier of the object.
ObjectIID
[in] Identifier of interface to return in ppObject
fReleaseWhenNoRefs
[in] Boolean indicating whether the object should be freed when the last client outside of the resource manager releases the object. If this flag is set, the object specified by ObjectCLSID must support aggregation.
ppObject
[out] Address of a pointer that receives the interface pointer of the service.

Return values

Value Description
S_OK Function completed successfully.
E_INVALIDARG One or more parameters are invalid.
E_POINTER ppObject is bad or invalid.
REGDB_E_CLASSNOTREG Class is not registered.
E_OUTOFMEMORY Exceeded available memory.
FAILED(hr) Appropriate error message.

Remarks

If the object does not exist, the ObjectCLSID parameter will be used to CoCreateInstance the object. This functionality allows multiple threads to ensure that a single shared object is created atomically by the resource manager. If the fReleaseWhenNoRefs flag is set to TRUE, the final release of the object will remove it from the service list. If fReleaseWhenNoRefs is FALSE, the service will remain in the service list until the resource manager is released or the service is explicitly removed through a SetObject call.