WinRUIGetLastInitStatus
La función WinRUIGetLastInitStatus permite a una aplicación determinar el estado de un RUI_INIT, de modo que la aplicación pueda evaluar si se debe agotar el tiempo de espera de la RUI_INIT . Esta extensión se puede usar para iniciar informes de estado, finalizar informes de estado o encontrar el estado actual. Para obtener más detalles al respecto, consulte la sección Comentarios.
Sintaxis
int WINAPI WinRUIGetLastInitStatus(
DWORD dwSid,
HANDLE hStatusHandle,
DWORD dwNotifyType,
BOOL bClearPrevious );
Parámetros
dwSid
Especifica el identificador de sesión RUI de la sesión para la que se determinará el estado. Si dwSid es cero, hStatusHandle se usa para notificar el estado en todas las sesiones. Tenga en cuenta que el parámetro lua_sid del bloque de control de verbos (VCB) de RUI_INIT es válido en cuanto la llamada a RUI o WinRUI para el RUI_INIT devuelve.
hStatusHandle
Especifica un identificador que se usa para indicar a la aplicación que ha cambiado el estado de la sesión (especificado por dwSid). Puede ser un identificador de ventana, un identificador de eventos o NULL; dwNotifyType debe establecerse en consecuencia:
Si hStatusHandle es un identificador de ventana, el estado se envía a la aplicación a través de un mensaje de ventana. El mensaje se obtiene de RegisterWindowMessage mediante la cadena "WinRUI". El parámetro wParam contiene el estado de la sesión. (Para obtener más información, vea Códigos de retorno). Dependiendo del valor de dwNotifyType, lParam contiene el identificador de sesión RUI de la sesión o el valor de lua_correlator del verbo RUI_INIT .
Si hStatusHandle es un identificador de eventos, cuando cambia el estado de la sesión especificada por dwSid , el evento se coloca en el estado señalado. A continuación, la aplicación debe realizar una llamada adicional a WinRUIGetLastInitStatus para averiguar el nuevo estado. Tenga en cuenta que el evento no debe ser el mismo que el usado para indicar la finalización de cualquier verbo RUI.
Si hStatusHandle es NULL, el estado de la sesión especificada por dwSid se devuelve en el código de retorno. En este caso, dwSid no debe ser cero a menos que bClearPrevious sea TRUE. Si hStatusHandle es NULL, dwNotifyType se omite.
dwNotifyType
Especifica el tipo de indicación necesaria. Esto determina el contenido del lParam del mensaje de ventana y cómo WinRUIGetLastInitStatus interpreta hStatusHandle. Los valores permitidos son:
WLUA_NTFY_EVENT
El parámetro hStatusHandle contiene un identificador de eventos.
WLUA_NTFY_MSG_CORRELATOR
El parámetro hStatusHandle contiene un identificador de ventana y el lParam del mensaje de ventana devuelto debe contener el valor del campo lua_correlator en el RUI_INIT.
WLUA_NTFY_MSG_SID
El parámetro hStatusHandle contiene un identificador de ventana y el lParam del mensaje de ventana devuelto debe contener el identificador de sesión lua.
bClearPrevious
Si es TRUE, los mensajes de estado ya no se envían para la sesión identificada por dwSid. Si dwSid es cero, los mensajes de estado ya no se envían para ninguna sesión. Si bClearPrevious es TRUE, se omiten hStatusHandle y dwNotifyType .
Valor devuelto
WLUASYSNOTREADY
SNABASE no se está ejecutando.
WLUANTFYINVALID
El parámetro dwNotifyType no es válido.
WLUAINVALIDHANDLE
El parámetro hStatusHandle no contiene un identificador válido.
WLUASTARTUPNOTCALLED
No se ha llamado a WinRUIStartup.
WLUALINKINACTIVE
El vínculo al host aún no está activo.
WLUALINKACTIVATING
El vínculo al host se está activando.
WLUAPUINACTIVE
El vínculo al host está activo, pero aún no se ha recibido ninguna ACTPU.
WLUAPUACTIVE
Se ha recibido una ACTPU.
WLUAPUREACTIVATED
Se ha reactivado la unidad física (PU).
WLUALUINACTIVE
El vínculo al host está activo y se ha recibido una ACTPU, pero no se ha recibido ACTLU.
WLUALUACTIVE
La LU está activa.
WLUALUREACTIVATED
Se ha reactivado la LU.
WLUAUNKNOWNKNOWN
La sesión está en un estado desconocido. (Se trata de un error interno).
WLUAGETLU
La sesión está esperando una respuesta Open(SSCP) del nodo.
WLUASIDINVALID
El identificador de seguridad (SID) especificado no coincide con ningún conocido por la RUI.
WLUASIDZERO
El parámetro hStatusHandle es NULL y bClearPrevious es FALSE, pero dwSid es cero.
WLUAGLOBALHANDLER
El parámetro dwSid es cero y se notificarán los mensajes de todas las sesiones. (Se trata de un código de retorno normal, no un error).
Comentarios
Esta extensión está pensada para usarse con un identificador de ventana o un identificador de eventos para habilitar la notificación asincrónica de los cambios de estado. También se puede usar solo para buscar el estado actual de una sesión.
Con un identificador de ventana
Hay dos maneras de usar esta extensión con un identificador de ventana:
WinRUIGetLastInitStatus(Sid,Handle,WLUA_NTFY_MSG_CORRELATOR,FALSE);
O bien:
WinRUIGetLastInitStatus(Sid,Handle,WLUA_NTFY_MSG_SID,FALSE);
Con esta implementación, un mensaje de ventana enviado al identificador de ventana especificado notifica los cambios de estado. Si se especifica WLUA_NTFY_MSG_CORRELATOR, el campo lParam del mensaje de ventana contiene el campo lua_correlator de la sesión. Si se especifica WLUA_NTFY_MSG_SID, el campo lParam del mensaje de la ventana contiene el identificador de sesión lua de la sesión.
Cuando se haya usado la extensión con un identificador de ventana, use lo siguiente para cancelar los informes de estado:
WinRUIGetLastInitStatus(Sid,NULL,0,TRUE);
Para esta implementación, tenga en cuenta que si Sid no es cero, el estado solo se notifica para esa sesión. Si Sid es cero, se notifica el estado de todas las sesiones.
Con un identificador de eventos
Para usar esta extensión con un identificador de eventos, implemente como se indica a continuación:
WinRUIGetLastInitStatus(Sid,Handle,WLUA_NOTIFY_EVENT,FALSE);
El evento cuyo identificador se asigna se indicará cuando se produzca un cambio en el estado. Dado que no se devuelve información cuando se señala un evento, se debe emitir una llamada adicional para averiguar el estado.
Status = WinRUIGetLastInitStatus(Sid,NULL,0,0,FALSE);
Tenga en cuenta que, en este caso, se debe especificar un Sid .
Cuando se haya usado la extensión con un identificador de eventos, use lo siguiente para cancelar los informes de estado:
WinRUIGetLastInitStatus(Sid,NULL,0,TRUE);
Consulta del estado actual
Para usar esta extensión para consultar el estado actual de una sesión, no es necesario usar un identificador de evento o ventana. En su lugar, use lo siguiente:
Status = WinRUIGetLastInitStatus(Sid,NULL,0,0,FALSE);