BOOL LocalAddPortEx( LPWSTR pName, DWORD Level, LPBYTE pBuffer, LPWSTR pMonitorName ) { LPWSTR pPortName; DWORD Error; WCHAR szLocalMonitor[MAX_PATH+1]; LPPORT_INFO_1 pPortInfo1; LPPORT_INFO_FF pPortInfoFF; LoadString(hInst, IDS_LOCALMONITOR, szLocalMonitor, sizeof(szLocalMonitor)-1); if (IS_NOT_LOCAL_PORT( pMonitorName, szLocalMonitor)) { // If pMonitorName != "Local Port", we have an // invalid Monitor name SetLastError(ERROR_INVALID_PARAMETER); return(FALSE); } switch (Level) { case (DWORD)-1: pPortInfoFF = (LPPORT_INFO_FF)pBuffer; pPortName = pPortInfoFF->pName; break; case 1: pPortInfo1 = (LPPORT_INFO_1)pBuffer; pPortName = pPortInfo1->pName; break; default: SetLastError(ERROR_INVALID_LEVEL); return(FALSE); } if (!pPortName) { SetLastError(ERROR_INVALID_PARAMETER); return(FALSE); } if (PortExists(pName, pPortName, &Error)) { SetLastError(ERROR_INVALID_PARAMETER); return(FALSE); } if (Error != NO_ERROR) { SetLastError(Error); return(FALSE); } if (!CreatePortEntry(pPortName)) { return(FALSE); } if (!WriteProfileString(szPorts, pPortName, L"")) { DeletePortEntry(pPortName); return(FALSE); } return TRUE; }
BOOL DeletePortW( LPWSTR pName, HWND hWnd, LPWSTR pPortName ) { if( DeleteRegistryValue( szRegPortNames, pPortName ) == NO_ERROR ) return DeletePortEntry( pPortName ); else return FALSE; }
BOOL DeletePort( LPWSTR pName, HWND hWnd, LPWSTR pPortName ) { BOOL rc; if( !hWnd ) hWnd = GetDesktopWindow( ); EnterSplSem(); if (rc = DeletePortEntry( pPortName )) WriteProfileString(szPorts, pPortName, NULL); LeaveSplSem(); return rc; UNREFERENCED_PARAMETER( pName ); }
BOOL WINAPI PJLMonClosePort( HANDLE hPort ) /*++ Routine Description: Language monitor ClosePort Arguments: hPort : Port handle Return Value: TRUE on success, FALSE on error --*/ { PINIPORT pIniPort = (PINIPORT)((INIPORT *)hPort); if ( !pIniPort || pIniPort->signature != PJ_SIGNATURE ) { SPLASSERT(pIniPort && pIniPort->signature == PJ_SIGNATURE); SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } pIniPort->status &= ~PP_INSTARTDOC; // // Kill Ustatus thread if it is running // if (pIniPort->status & PP_THREAD_RUNNING) { pIniPort->status &= ~PP_RUN_THREAD; #ifdef DEBUG OutputDebugStringA("Set ~PP_RUN_THREAD from close port\n"); #endif SetEvent(pIniPort->WakeUp); // // if UStatusThread is still running at this point, // wait utill it terminates, because we can't DeletePortEntry // until it terminates. // while (pIniPort->WakeUp) Sleep(WAIT_FOR_USTATUS_THREAD_TIMEOUT); } if ( pIniPort->fn.pfnClosePort ) (*pIniPort->fn.pfnClosePort)(pIniPort->hPort); EnterSplSem(); DeletePortEntry(pIniPort); LeaveSplSem(); return TRUE; }