Come registrare un gestore per un evento del dispositivo

I gestori definiscono la parte software di AutoPlay. Definiscono l'icona e il nome descrittivo del software, nonché il componente COM (Component Object Model) per creare un'istanza e come inizializzare il componente in risposta a un evento. Ogni gestore per un evento specifico viene registrato come valore nella chiave EventHandler appropriata. Quando viene rilevato tale evento, all'utente viene richiesto di scegliere un gestore da un elenco di tutti i gestori registrati per tale evento.

Istruzioni

I gestori e i relativi valori associati vengono definiti sotto la chiave Gestori autoplayHandlers\. Le sottochiavi variano a seconda che il sistema possa leggere direttamente il contenuto del dispositivo o se il dispositivo fornisce contenuti al sistema tramite un'interfaccia proprietaria.

L'esempio seguente illustra le sottochiavi e i valori usati per un dispositivo, ad esempio una videocamera digitale o un lettore .mp3, che fornisce il relativo contenuto al sistema tramite un'interfaccia proprietaria. Il gestore di esempio è denominato MyHandler.

HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
   SOFTWARE
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AutoplayHandlers
                     Handlers
                        MyHandler
                           Action [REG_SZ] = Play music
                           CLSID [REG_SZ] = {a51f2ed3-634e-4a97-9d55-efcf08e7b32f}
                           DefaultIcon [REG_EXPAND_SZ] = %ProgramFiles%\Windows Media Player\wmplayer.exe,0
                           InitCmdLine [REG_SZ] = /Play
                           ProgID [REG_SZ] = WMP.PlayMusicFiles
                           Provider [REG_SZ] = Windows Media Player

Nota

Mentre l'esempio mostra sia un valore ProgID che un valore CLSID (Class Identifier), in pratica questi valori si escludono a vicenda in modo che solo uno o l'altro sia presente. Il valore ProgID è preferibile. Indipendentemente dall'uso, deve puntare a un componente COM che implementa l'interfaccia IHWEventHandler .

 

È possibile immettere il valore azione come valore letterale, ad esempio "Riproduci musica", come illustrato in questo esempio o come nome di file con una stringa di risorsa. È anche possibile immettere il valore provider come valore letterale o come nome file con una stringa di risorsa. AutoPlay combina il valore action e il valore provider con la parola "using" per creare un didascalia descrittivo visualizzato nell'interfaccia utente. Nell'esempio, il didascalia risultante è "Riprodurre musica usando Lettore multimediale Windows".

Il valore DefaultIcon punta a un file con estensione ico o a una risorsa in un file binario. Se il valore numerico che segue il nome del file binario è zero o maggiore, è il valore di indice dell'icona nel file binario. Se è un valore negativo, è l'ID risorsa icona. Sono consigliati valori di indice negativi. Non è necessario alcun valore nel caso di un file con estensione ico. È consigliabile usare le variabili di ambiente nel percorso.

Il valore InitCmdLine passa invariato tramite il metodo IHWEventHandler::Initialize prima che vengano chiamati altri metodi.

L'esempio seguente mostra le sottochiavi e i valori usati per un dispositivo che può essere letto direttamente, ad esempio un'unità CD-ROM o un altro disco rimovibile. Anche in questo caso, il gestore di esempio è denominato MyHandler.

HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
   SOFTWARE
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AutoplayHandlers
                     Handlers
                        MyHandler
                           Action [REG_SZ] = @%systemroot%\System32\wiaacmgr.exe,-276
                           DefaultIcon [REG_EXPAND_SZ] = %systemroot%\System32\wiaacmgr.exe,-2
                           InvokeProgID [REG_SZ] = WIA.AutoPlayDropHandler
                           InvokeVerb [REG_SZ] = open
                           Provider [REG_SZ] = @%systemroot%\System32\wiaacmgr.exe,-101

In questo esempio i valori Action e Provider vengono visualizzati come nome file con una stringa di risorsa anziché valori letterali, ma le stringhe a cui fanno riferimento vengono usate nello stesso modo. Vengono combinati con la parola "using" per formare un didascalia descrittivo come illustrato in precedenza.

I valori InvokeProgID e InvokeVerb sostituiscono CLSID, InitCmdLine e ProgID. I valori InvokeProgID e InvokeVerb corrispondono ai nomi di chiave presenti in HKEY_CLASSES_ROOT, come illustrato nella voce del Registro di sistema seguente. Questo set di chiavi di esempio corrisponde all'esempio di gestore specifico descritto in precedenza.

HKEY_CLASSES_ROOT
   WIA.AutoplayDropHandler
      shell
         open
            DropTarget
               Clsid = {F1ABE2B5-C073-4dba-B6EB-FD7A5111DD8F}

La funzione CoCreateInstance usa CLSID per implementare l'applicazione appropriata.

Dopo aver definito il gestore in uno di questi due modi, è necessario registrarlo per un evento specifico. A tale scopo, specificare il nome del gestore come valore per la chiave dell'evento in EventHandlers. Nell'esempio seguente viene illustrato come registrare MyHandler come gestore per l'evento GenericVolumeArrival. Non ha alcun valore di dati assegnato.

HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
   SOFTWARE
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AutoplayHandlers
                     EventHandlers
                        GenericVolumeArrival
                           MyHandler [REG_SZ]

IHWEventHandler

Cocreateinstance