Condividi tramite


WinRUIGetLastInitStatus

La funzione WinRUIGetLastInitStatus consente a un'applicazione di determinare lo stato di un RUI_INIT, in modo che l'applicazione possa valutare se il RUI_INIT deve essere timeout. Questa estensione può essere usata per avviare la segnalazione dello stato, terminare la segnalazione dello stato o trovare lo stato corrente. Per informazioni dettagliate, vedere la sezione Osservazioni.

Sintassi

  
          int WINAPI WinRUIGetLastInitStatus(   
DWORD dwSid,             
 HANDLE hStatusHandle,    
DWORD dwNotifyType,      
BOOL bClearPrevious    );  

Parametri

dwSid
Specifica l'identificatore di sessione URI della sessione per cui verrà determinato lo stato. Se dwSid è zero, viene usato hStatusHandle per segnalare lo stato in tutte le sessioni. Si noti che il parametro lua_sid nel blocco di controllo verbo RUI_INIT (VCB) è valido non appena viene restituita la chiamata a RUI o WinRUI per il RUI_INIT .

hStatusHandle
Specifica un handle utilizzato per segnalare all'applicazione che lo stato della sessione (specificato da dwSid) è stato modificato. Può essere un handle di finestra, un handle di evento o NULL; dwNotifyType deve essere impostato di conseguenza:

Se hStatusHandle è un handle di finestra, lo stato viene inviato all'applicazione tramite un messaggio di finestra. Il messaggio viene ottenuto da RegisterWindowMessage usando la stringa "WinRUI". Il parametro wParam contiene lo stato della sessione. Per altre informazioni, vedere Codici restituiti. A seconda del valore di dwNotifyType, lParam contiene l'identificatore di sessione URI della sessione o il valore di lua_correlator dal verbo RUI_INIT .

Se hStatusHandle è un handle di evento, quando lo stato della sessione specificata dalle modifiche dwSid , l'evento viene inserito nello stato segnalato. L'applicazione deve quindi effettuare un'ulteriore chiamata a WinRUIGetLastInitStatus per scoprire il nuovo stato. Si noti che l'evento non deve essere uguale a quello usato per segnalare il completamento di qualsiasi verbo URI.

Se hStatusHandle è NULL, lo stato della sessione specificata da dwSid viene restituito nel codice restituito. In questo caso , dwSid non deve essere zero a meno che bClearPrevious non sia TRUE. Se hStatusHandle è NULL, dwNotifyType viene ignorato.

dwNotifyType
Specifica il tipo di indicazione richiesta. Ciò determina il contenuto del parametro lParam del messaggio della finestra e il modo in cui WinRUIGetLastInitStatus interpreta hStatusHandle. I valori consentiti sono i seguenti:

WLUA_NTFY_EVENT

Il parametro hStatusHandle contiene un handle di evento.

WLUA_NTFY_MSG_CORRELATOR

Il parametro hStatusHandle contiene un handle di finestra e lParam del messaggio della finestra restituita deve contenere il valore del campo lua_correlator nel RUI_INIT.

WLUA_NTFY_MSG_SID

Il parametro hStatusHandle contiene un handle di finestra e lParam del messaggio della finestra restituita deve contenere l'identificatore di sessione LUA.

bClearPrevious
Se TRUE, i messaggi di stato non vengono più inviati per la sessione identificata da dwSid. Se dwSid è zero, i messaggi di stato non vengono più inviati per alcuna sessione. Se bClearPrevious è TRUE, hStatusHandle e dwNotifyType vengono ignorati.

Valore restituito

WLUASYSNOTREADY
SNABASE non è in esecuzione.

WLUANTFYINVALID
Il parametro dwNotifyType non è valido.

WLUAINVALIDHANDLE
Il parametro hStatusHandle non contiene un handle valido.

WLUASTARTUPNOTCALLED
WinRUIStartup non è stato chiamato.

WLUALINKINACTIVE
Il collegamento all'host non è ancora attivo.

WLUALINKACTIVATING
Viene attivato il collegamento all'host.

WLUAPUINACTIVE
Il collegamento all'host è attivo, ma non è ancora stato ricevuto ACTPU.

WLUAPUACTIVE
È stata ricevuta una ACTPU.

WLUAPUREACTIVATED
L'unità fisica (PU) è stata riattivata.

WLUALUINACTIVE
Il collegamento all'host è attivo e un ACTPU è stato ricevuto, ma non è stato ricevuto ALCUN ACTLU.

WLUALUACTIVE
L'unità lu è attiva.

WLUALUREACTIVATED
L'unità lu è stata riattivata.

WLUAUNKNOWN
La sessione si trova in uno stato sconosciuto. Si tratta di un errore interno.

WLUAGETLU
La sessione è in attesa di una risposta Open(SSCP) dal nodo.

WLUASIDINVALID
L'ID di sicurezza (SID) specificato non corrisponde ad alcun elemento noto dall'URI.

WLUASIDZERO
Il parametro hStatusHandle è NULL e bClearPrevious è FALSE, ma dwSid è zero.

WLUAGLOBALHANDLER
Il parametro dwSid è zero e i messaggi di tutte le sessioni riceveranno una notifica. Si tratta di un codice restituito normale, non di un errore.

Commenti

Questa estensione deve essere usata con un handle di finestra o un handle di evento per abilitare la notifica asincrona delle modifiche dello stato. Può anche essere usato da solo per trovare lo stato corrente di una sessione.

Con un handle di finestra

Esistono due modi per usare questa estensione con un handle di finestra:

WinRUIGetLastInitStatus(Sid,Handle,WLUA_NTFY_MSG_CORRELATOR,FALSE);  

-oppure-

WinRUIGetLastInitStatus(Sid,Handle,WLUA_NTFY_MSG_SID,FALSE);  

Con questa implementazione, le modifiche dello stato vengono segnalate da un messaggio di finestra inviato all'handle della finestra specificato. Se viene specificato WLUA_NTFY_MSG_CORRELATOR, il campo lParam nel messaggio della finestra contiene il campo lua_correlator per la sessione. Se viene specificato WLUA_NTFY_MSG_SID, il campo lParam nel messaggio della finestra contiene l'identificatore di sessione LUA per la sessione.

Quando l'estensione è stata usata con un handle di finestra, usare quanto segue per annullare la segnalazione dello stato:

WinRUIGetLastInitStatus(Sid,NULL,0,TRUE);  

Per questa implementazione, si noti che se Sid è diverso da zero, lo stato viene segnalato solo per tale sessione. Se Sid è zero, lo stato viene segnalato per tutte le sessioni.

Con un handle di evento

Per usare questa estensione con un handle di eventi, implementarla nel modo seguente:

WinRUIGetLastInitStatus(Sid,Handle,WLUA_NOTIFY_EVENT,FALSE);  

L'evento il cui handle viene specificato verrà segnalato quando si verifica una modifica dello stato. Poiché non vengono restituite informazioni quando viene segnalato un evento, è necessario eseguire un'ulteriore chiamata per individuare lo stato.

Status = WinRUIGetLastInitStatus(Sid,NULL,0,0,FALSE);  

Si noti che in questo caso è necessario specificare un Sid .

Quando l'estensione è stata usata con un handle di evento, usare quanto segue per annullare la segnalazione dello stato:

WinRUIGetLastInitStatus(Sid,NULL,0,TRUE);  

Eseguire query sullo stato corrente

Per usare questa estensione per eseguire una query sullo stato corrente di una sessione, non è necessario usare un handle di evento o finestra. Usare invece quanto segue:

Status = WinRUIGetLastInitStatus(Sid,NULL,0,0,FALSE);  

Vedere anche

RUI
RUI_INIT
WinRUI
WinRUIStartup