Condividi tramite


Metodo IClassFactory2::CreateInstanceLic (ocidl.h)

Crea un'istanza dell'oggetto concesso in licenza per il codice di licenza specificato. Questo metodo è l'unico mezzo possibile per creare un oggetto in un computer altrimenti senza licenza.

Sintassi

HRESULT CreateInstanceLic(
  [in]  IUnknown *pUnkOuter,
  [in]  IUnknown *pUnkReserved,
  [in]  REFIID   riid,
  [in]  BSTR     bstrKey,
  [out] PVOID    *ppvObj
);

Parametri

[in] pUnkOuter

Puntatore all'interfaccia IUnknown di controllo sull'oggetto sconosciuto esterno se questo oggetto viene creato come parte di un'aggregazione. Se l'oggetto non fa parte di un'aggregazione, questo parametro deve essere NULL.

[in] pUnkReserved

Questo parametro è inutilizzato e deve essere NULL.

[in] riid

Riferimento all'identificatore dell'interfaccia da utilizzare per comunicare con l'oggetto appena creato.

[in] bstrKey

Chiave di licenza di runtime ottenuta in precedenza da IClassFactory2::RequestLicKey necessaria per creare un oggetto.

[out] ppvObj

Indirizzo della variabile del puntatore che riceve il puntatore di interfaccia richiesto in riid. Al termine della restituzione, *ppvObj contiene il puntatore all'interfaccia richiesto. Se si verifica un errore, l'implementazione deve impostare *ppvObj su NULL.

Valore restituito

Questo metodo può restituire i valori restituiti standard E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, nonché i valori seguenti.

Codice restituito Descrizione
S_OK
La licenza è stata creata correttamente.
E_NOTIMPL
Questo metodo non viene implementato perché gli oggetti possono essere creati solo in computer con licenza completa tramite IClassFactory::CreateInstance.
E_POINTER
Un puntatore passato in bstrKey o ppvObj non è valido. Ad esempio, può essere NULL.
E_NOINTERFACE
L'oggetto può essere creato (e la chiave di licenza è valida), ad eccezione dell'oggetto non supporta l'interfaccia specificata da riid.
CLASS_E_NOAGGREGATION
Il parametro pUnkOuter è diverso da NULL, ma questa classe oggetto non supporta l'aggregazione.
CLASS_E_NOTLICENSED
La chiave fornita in bstrKey non è una chiave di licenza valida.

Commenti

Note per gli implementatori

Se la class factory non fornisce un codice di licenza (ovvero IClassFactory2::RequestLicKey restituisce E_NOTIMPL e il membro fRuntimeKeyAvail in LICINFO è impostato su FALSE in IClassFactory2::GetLicInfo), questo metodo può anche restituire E_NOTIMPL. In questi casi, la class factory implementa semplicemente IClassFactory2 per specificare se il computer è concesso in licenza tramite il membro fLicVerified di LICINFO.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ocidl.h

Vedi anche

IClassFactory2

LICINFO