Registrazione di un server EXE in esecuzione
Quando viene avviato un server eseguibile (EXE), deve chiamare CoRegisterClassObject, che registra il CLSID per il server in quello che viene chiamato tabella di classi (una tabella diversa dalla tabella oggetti in esecuzione). Quando un server viene registrato nella tabella delle classi, consente al gestore del controllo del servizio di determinare che non è necessario avviare di nuovo la classe, perché il server è già in esecuzione. Solo se il server non è elencato nella tabella delle classi, il gestore del servizio controllerà il Registro di sistema per i valori appropriati e avvierà il server associato al CLSID specificato.
Si passa CoRegisterClassObject CLSID per la classe e un puntatore alla relativa interfaccia IUnknown. I client che successivamente chiamano CoGetClassObject con questo CLSID recupereranno un puntatore all'interfaccia richiesta, purché la sicurezza non lo impedisca. Per una descrizione di diverse funzioni di creazione e attivazione dell'istanza, vedere Funzioni helper per la creazione di istanze.
Il server per un oggetto classe deve chiamare CoRevokeClassObject per revocare l'oggetto classe (rimuovere la registrazione) quando sono soddisfatte tutte le condizioni seguenti:
- Nessuna istanza esistente della definizione dell'oggetto.
- Non ci sono blocchi sull'oggetto classe.
- L'applicazione che fornisce servizi all'oggetto classe non è sotto il controllo utente (non visibile all'utente sullo schermo).
Argomenti correlati