Condividi tramite


Registrazione di un provider di High-Performance

Analogamente ad altri provider di istanze, si registra un provider a prestazioni elevate con Strumentazione gestione Microsoft Windows (WMI) creando un'istanza delle classi __Win32Provider e __InstanceProviderRegistration . L'istanza di __Win32Provider definisce l'implementazione fisica del provider e l'istanza di __InstanceProviderRegistration definisce il set di funzionalità del provider. Per altre informazioni, vedere Registrazione di un provider.

La procedura seguente descrive come registrare un provider di istanze ad alte prestazioni.

Per registrare un provider di istanze ad alte prestazioni

  1. Creare un'istanza della classe __Win32Provider che descrive il provider.

    Assicurarsi di aggiungere una proprietà ClientLoadableCLSID all'istanza di __Win32Provider . Se il provider e il client si trovano nello stesso computer, WMI carica il provider in-process nel client usando ClientLoadableCLSID come identificatore di classe. Quando il provider e il client si trovano in computer diversi, WMI carica il provider in-process in WMI. WMI usa anche ClientLoadableCLSID per supportare le operazioni di aggiornamento.

  2. Creare un'istanza della classe __InstanceProviderRegistration che descrive il set di funzionalità del provider.

    Assicurarsi di contrassegnare la classe con i qualificatori Dynamic e Provider . Il qualificatore dinamico segnala che WMI deve usare un provider per recuperare le istanze della classe. Il qualificatore provider specifica il nome del provider che deve essere utilizzato da WMI.

    Un provider ad alte prestazioni deve anche supportare lo stato per le operazioni, le operazioni di enumerazione o entrambi. Assicurarsi di usare le proprietà SupportsGet e SupportsEnumeration nell'implementazione .

L'esempio di codice seguente illustra come implementare le classi __Win32Provider e __InstanceProviderRegistration per un provider ad alte prestazioni.

instance of __Win32Provider as $P
{
    Name="TestProv";
    CLSID="{A41602A4-C038-11d1-AEB6-00C04FB68820}";
    ClientLoadableCLSID="{423B32C9-B033-4242-EFB6-55C044242821}";
};

instance of __InstanceProviderRegistration
{
    Provider = $P;
    SupportsGet = TRUE;
    SupportsEnumeration = TRUE;
};

[ dynamic, 
  provider("TestProv")
]

class TestClass
{
    [key] string KeyVal;
    
    string StrVal1;

    sint32 IntVal1;
    sint32 IntVal2;

    sint32 IntArray2[];
};

Creazione di un provider di istanze in un provider di High-Performance