IOPCServerPublicGroups:: RemovePublicGroup
Previous  Top  Next

HRESULT RemovePublicGroup(  
   [in] OPCHANDLE hServerGroup ,  
   [in] BOOL bForce  
   );  
 
 
Descrizione
Cancella un group pubblico.

Parametri
Descrizione
hServerGroup
Identificatore del group che deve essere rimosso.
bForce
Forza la cancellazione del group anche se vi sono ancora riferimenti ad esso in sospeso.


Codici Restituiti

Codici Restituiti
Descrizione
E_FAIL
L'operazione non ha avuto successo.
E_OUTOFMEMORY
Non c'è memoria a sufficienza.
E_INVALIDARG
Un argomento passato alla funzione era invalido
S_OK
L'operazione ha avuto successo.
OPC_S_INUSE
Non è stato rimosso perché esistono ancora riferimenti ad esso. Il group sarà marcato come cancellato, e sarà rimosso dal server quando tutti i riferimenti a quest'oggetto saranno rilasciati.   


Commenti
Un group non è cancellato quando tutte le interfacce client vengono rilasciate, poichè il server stesso mantiene un riferimento al group. Il client può ancora chiamare GetPublicGroupByName dopo che tutte le interfacce sono state rilasciate. RemovePublicGroup() forza il server a rilasciare i suoi ultimi riferimenti al group, il che porta alla vera cancellazione del group.
E' permesso al server di pubblicare groups 'hard coded', che non possono essere cancellati.
In genere, un client ben funzionante chiamerà questa funzione solo dopo che ha rilasciato tutte le interfacce.
Se esistono ancora interfacce, RemovePublicGroup marcherà il gruppo come "cancellato". Ogni altra chiamata a questo group attraverso queste interfacce ritornerà E_FAIL. Quando tutte le interfacce sono state rilasciate, il group verrà cancellato davvero. Se bForce è True allora il group verrà cancellato incondizionatamente anche se esistono ancora riferimenti (interfacce). Un uso ulteriore di tali interfacce avrà come conseguenza una violazione dell'accesso.
Notare che qualsiasi client può cancellare un group pubblico. Si può ottenere l'identificatore server del group chiamando IOPCGroupStateMgt::GetState.