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.