Condividi tramite


Metodo Provider::EnumerateInstances (provider.h)

[La classe Provider fa parte di WMI Provider Framework, che viene ora considerata in stato finale e non saranno disponibili ulteriori sviluppi, miglioramenti o aggiornamenti per problemi non correlati alla sicurezza che interessano queste librerie. Le API MI devono essere usate per tutti i nuovi sviluppi.

Il metodo EnumerateInstances viene chiamato da WMI per recuperare tutte le istanze della classe di un provider di framework.

Sintassi

HRESULT EnumerateInstances(
  MethodContext *pMethodContext,
  long          lFlags
);

Parametri

pMethodContext

Puntatore all'oggetto contesto per questa chiamata. Questo valore contiene tutte le proprietà IWbemContext specificate dal client. Inoltre, questo puntatore deve essere usato come parametro per tutte le chiamate in WMI.

lFlags

Maschera di bit dei flag con informazioni sull'operazione EnumerateInstances . Questo è il valore specificato dal client nel metodo IWbemServices::CreateInstanceEnum .

I flag seguenti vengono gestiti da (e filtrati) da WMI:

  • WBEM_FLAG_DEEP
  • WBEM_FLAG_SHALLOW
  • WBEM_FLAG_RETURN_IMMEDIATELY
  • WBEM_FLAG_FORWARD_ONLY
  • WBEM_FLAG_BIDIRECTIONAL
  • WBEM_FLAG_USE_AMENDED_QUALIFIERS

Valore restituito

L'implementazione predefinita del provider di framework di questo metodo restituisce WBEM_E_PROVIDER_NOT_CAPABLE al metodo chiamante. Il metodo IWbemServices::CreateInstanceEnum elenca i valori restituiti più comuni, ma è possibile scegliere di restituire qualsiasi codice restituito COM.

Commenti

Non è un errore per EnumerateInstances restituire zero istanze creando un'istanza di zero istanze CInstance e impostando il valore restituito su WBEM_S_NO_ERROR.

WMI spesso chiama EnumerateInstances quando un'applicazione client chiama IWbemServices::CreateInstanceEnum, anche se WMI può chiamare anche EnumerateInstances in altre situazioni. Di seguito è riportato un modo comune per eseguire l'override di EnumerateInstances:

  1. Creare un'istanza vuota della classe usando Provider::CreateNewInstance.
  2. Popolare le proprietà dell'istanza vuota usando i metodi Set della classe CInstance , ad esempio CInstance::SetByte o CInstance::SetStringArray.
  3. Inviare di nuovo l'istanza al client usando CInstance::Commit.
Se si sta creando un provider solo metodo e non si dispone di istanze o se l'enumerazione di istanze della classe restituirà troppe istanze, è possibile decidere di supportare le query che recuperano solo istanze specifiche.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione provider.h (include FwCommon.h)
Libreria FrameDyn.lib
DLL FrameDynOS.dll; FrameDyn.dll