Partager via


Méthode IClassFactory2 ::CreateInstanceLic (ocidl.h)

Crée une instance de l’objet sous licence pour la clé de licence spécifiée. Cette méthode est le seul moyen possible de créer un objet sur une machine sans licence.

Syntaxe

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

Paramètres

[in] pUnkOuter

Pointeur vers l’interface IUnknown de contrôle sur l’inconnu externe si cet objet est créé dans le cadre d’un agrégat. Si l’objet ne fait pas partie d’un agrégat, ce paramètre doit avoir la valeur NULL.

[in] pUnkReserved

Ce paramètre n’est pas utilisé et doit avoir la valeur NULL.

[in] riid

Référence à l’identificateur de l’interface à utiliser pour communiquer avec l’objet nouvellement créé.

[in] bstrKey

Clé de licence d’exécution précédemment obtenue à partir de IClassFactory2 ::RequestLicKey qui est nécessaire pour créer un objet.

[out] ppvObj

Adresse de la variable pointeur qui reçoit le pointeur d’interface demandé dans riid. Une fois le retour réussi, *ppvObj contient le pointeur d’interface demandé. Si une erreur se produit, l’implémentation doit définir *ppvObj sur NULL.

Valeur retournée

Cette méthode peut retourner les valeurs de retour standard E_INVALIDARG, E_OUTOFMEMORY et E_UNEXPECTED, ainsi que les valeurs suivantes.

Code de retour Description
S_OK
La licence a été créée.
E_NOTIMPL
Cette méthode n’est pas implémentée, car les objets peuvent uniquement être créés sur des machines sous licence complète via IClassFactory ::CreateInstance.
E_POINTER
Un pointeur transmis dans bstrKey ou ppvObj n’est pas valide. Par exemple, il peut être NULL.
E_NOINTERFACE
L’objet peut être créé (et la clé de licence est valide), sauf que l’objet ne prend pas en charge l’interface spécifiée par riid.
CLASS_E_NOAGGREGATION
Le paramètre pUnkOuter n’est pas NULL, mais cette classe d’objet ne prend pas en charge l’agrégation.
CLASS_E_NOTLICENSED
La clé fournie dans bstrKey n’est pas une clé de licence valide.

Remarques

Notes aux implémenteurs

Si la fabrique de classes ne fournit pas de clé de licence (autrement dit, IClassFactory2 ::RequestLicKey retourne E_NOTIMPL et que le membre fRuntimeKeyAvail dans LICINFO a la valeur FALSE dans IClassFactory2 ::GetLicInfo), cette méthode peut également retourner E_NOTIMPL. Dans ce cas, la fabrique de classes implémente IClassFactory2 simplement pour spécifier si la machine est sous licence via le membre fLicVerified de LICINFO.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête ocidl.h

Voir aussi

IClassFactory2

LICINFO