Share via


ISpResourceManager::GetObject (Windows Embedded CE 6.0)

1/6/2010

This method gets a service object from the current service list. If the object does not exist then the ObjectCLSID parameter will be used to call CoCreateInstance for the object. This 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.

Syntax

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 retrieve in ppObject
  • fReleaseWhenNoRefs
    [in] Value indicating if the object should be freed when the last client outside of the resource manager releases the object. Set this value to TRUE to free the object, and to FALSE otherwise. If this value is TRUE, the object specified by ObjectCLSID must support aggregation.
  • ppObject
    [out] Address of a pointer to the interface for the service object.

Return Value

The following table shows the possible return values.

Value Description

S_OK

Function completed successfully.

E_INVALIDARG

One or more arguments 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.

Requirements

Header sapi.h, sapi.idl
Library sapilib.lib
Windows Embedded CE Windows CE .NET 4.1 and later

See Also

Reference

ISpResourceManager
SAPI Interfaces