ANSC_STATUS ScliShoDoBufferedCommands ( ANSC_HANDLE hThisObject, ANSC_HANDLE hSrvSession, ANSC_HANDLE hExecEnv ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PSCLI_SHELL_OBJECT pMyObject = (PSCLI_SHELL_OBJECT )hThisObject; PSCLI_SHELL_PROPERTY pProperty = (PSCLI_SHELL_PROPERTY )&pMyObject->Property; PSCLI_SHELL_EXEC_ENV pScliExecEnv = (PSCLI_SHELL_EXEC_ENV )hExecEnv; PTELNET_CMD_EXECUTION_ENV pTelnetEnv = (PTELNET_CMD_EXECUTION_ENV)pScliExecEnv->hTelnetEnv; PTELNET_TSC_INTERFACE pTscIf = (PTELNET_TSC_INTERFACE )pTelnetEnv->hTscIf; PSCLI_SHELL_SESSION_EXEC pSession; BOOL bCmdAvailable; PSCLI_SHELL_BUFFERED_CMD_LIST pBufferedCmdArray; pSession = (PSCLI_SHELL_SESSION_EXEC)pMyObject->GetSession((ANSC_HANDLE)pMyObject, (ULONG)hSrvSession); if ( !pSession ) { return ANSC_STATUS_RESOURCES; } pBufferedCmdArray = &pSession->BufferedCmd; if ( TRUE ) { AnscAcquireLock(&pSession->AccessLock); bCmdAvailable = ( pBufferedCmdArray->ulCount != 0 ); AnscReleaseLock(&pSession->AccessLock); if ( bCmdAvailable ) { returnStatus = pMyObject->RunCmd ( (ANSC_HANDLE)pMyObject, hSrvSession, (ANSC_HANDLE)pTelnetEnv ); } else { AnscAcquireLock(&pSession->AccessLock); if ( pSession->CommandLen != 0 ) { returnStatus = pTscIf->Output ( pTscIf->hOwnerContext, hSrvSession, pSession->Command, pSession->CommandLen ); } AnscReleaseLock(&pSession->AccessLock); } } return ANSC_STATUS_SUCCESS; }