/** routetbl_add_branch: * adds route branch to specified qnet connection */ void routetbl_add_branch( qnet * net, const net_id * nid ) { struct rtbl_entry * re = find_entry(net); assert(re); debug_a("routetbl_add_branch: route to "); debug_a(net_id_dump(nid)); debug_a(" [through "); debug_a(net_id_dump(&net->id)); debug("]"); /** check that it is'nt already on the list */ if(find_branch(nid, NULL)) { log_a("routetbl_add_branch: the net \""); log_a(net_id_dump(nid)); log("\" already in route table: ignored"); return; } /** ok, not found: insert it */ insert_branch(re, nid); /* broadcast new net */ broadcast_route_change(nid, 1); }
BOOL KFunction::RebootSystem() { HANDLE hToken = NULL; BOOL bReturn = FALSE; BOOL bRetCode = FALSE; bRetCode = OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ); if (!bRetCode) { goto Exit0; } TOKEN_PRIVILEGES tkp; bRetCode = LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid ); if (!bRetCode) goto Exit0; tkp.PrivilegeCount = 1; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges( hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0 ); if (GetLastError() != ERROR_SUCCESS) { goto Exit0; } DWORD dwOption = 0; dwOption = EWX_REBOOT | EWX_FORCE; bRetCode = ExitWindowsEx( dwOption, SHTDN_REASON_MAJOR_APPLICATION ); goto Exit0; bReturn = TRUE; Exit0: if (hToken) CloseHandle(hToken); log_a("KFunction::RebootSystem return:%d\n", bReturn); return bReturn; }
/** * Elog demo */ static void test_elog(void) { log_a("Hello EasyLogger!"); log_e("Hello EasyLogger!"); log_w("Hello EasyLogger!"); log_i("Hello EasyLogger!"); log_d("Hello EasyLogger!"); log_v("Hello EasyLogger!"); //elog_raw("Hello EasyLogger!"); }
/** * EasyLogger demo */ void test_elog(void) { /* test log output for all level */ log_a("Hello EasyLogger!"); log_e("Hello EasyLogger!"); log_w("Hello EasyLogger!"); log_i("Hello EasyLogger!"); log_d("Hello EasyLogger!"); log_v("Hello EasyLogger!"); // elog_raw("Hello EasyLogger!"); }
BOOL _InitPsapiFunc(void) { if (g_pfnGetModuleFileNameExW || g_pfnGetProcessImageFileNameW) return TRUE; HMODULE hModule = ::LoadLibrary(L"Psapi.dll"); if (!hModule) return FALSE; g_pfnGetModuleFileNameExW = (PFN_GetModuleFileNameExW)::GetProcAddress(hModule, "GetModuleFileNameExW"); g_pfnGetProcessImageFileNameW = (PFN_GetProcessImageFileNameW)::GetProcAddress(hModule, "GetProcessImageFileNameW"); log_a("g_pfnGetModuleFileNameExW:0x%x\n", g_pfnGetModuleFileNameExW); log_a("g_pfnGetProcessImageFileNameW:0x%x\n", g_pfnGetProcessImageFileNameW); if (g_pfnGetModuleFileNameExW || g_pfnGetProcessImageFileNameW) return TRUE; return FALSE; }
/** routetbl_remove: * removes qnet connections from route table */ void routetbl_remove(qnet * net) { struct rtbl_entry * re = find_entry(net); if(re==NULL) { /* no such entry found */ log_a("routetbl_remove: requested removal of unknown conn \""); log_a(net_id_dump(&net->id)); log("\" table entry: ignored"); return; } /** remove branches */ remove_all_branches(re); broadcast_route_change(&net->id, 0); /** remove it from the list */ if(rtbl_count==1) { rtbl_first = rtbl_last = NULL; } else { if(re==rtbl_first) { rtbl_first = rtbl_first->next; rtbl_first->prev = NULL; } else if(re==rtbl_last) { rtbl_last = rtbl_last->prev; rtbl_last->next = NULL; } else { re->prev->next = re->next; re->next->prev = re->prev; } } rtbl_count --; /** remove branches */ if(re->branches) { xfree((void*)re->branches); } xfree((void*)re); }
BOOL KFunction::UninstallService(LPCTSTR szServiceName) { BOOL bReturn = FALSE; SC_HANDLE hScm = NULL; SC_HANDLE hService = NULL; hScm = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (!hScm) goto Exit0; hService = ::OpenService( hScm, szServiceName, DELETE ); if (!hService) goto Exit0; bReturn = ::DeleteService(hService); Exit0: if (hScm) CloseServiceHandle(hScm); if (hService) CloseServiceHandle(hService); if (!bReturn) { CString strSubKey; strSubKey.Format(_T("SYSTEM\\CurrentControlSet\\Services\\%s"), szServiceName); LONG lRetCode = DeleteSubKeyTree(HKEY_LOCAL_MACHINE, strSubKey); log_a("UninstallService DeleteSubKeyTree:%ws return:%d\n", szServiceName, lRetCode); } else { log_a("UninstallService:%ws succeed\n", szServiceName); } return bReturn; }
/** * Elog demo */ static void test_elog(void) { /* output all saved log from flash */ elog_flash_output_all(); /* test log output for all level */ log_a("Hello EasyLogger!"); log_e("Hello EasyLogger!"); log_w("Hello EasyLogger!"); log_i("Hello EasyLogger!"); log_d("Hello EasyLogger!"); log_v("Hello EasyLogger!"); elog_raw("Hello EasyLogger!"); /* trigger assert. Now will run elog_user_assert_hook. All log information will save to flash. */ ELOG_ASSERT(0); }