APIERR MNetServerEnum( const TCHAR FAR * pszServer, UINT Level, BYTE FAR ** ppbBuffer, UINT FAR * pcEntriesRead, ULONG flServerType, TCHAR FAR * pszDomain ) { DWORD cTotalAvail; return (APIERR)NetServerEnum( (TCHAR *)pszServer, Level, ppbBuffer, MAXPREFERREDLENGTH, (LPDWORD)pcEntriesRead, &cTotalAvail, flServerType, pszDomain, NULL ); } // MNetServerEnum
void CShowActiveDirUsers::GetDCName(LPTSTR szDCName, LPTSTR szDomain) { NET_API_STATUS ret = 0; LPBYTE bufptr; SERVER_INFO_100* pS100; LPWSTR pServer = NULL; DWORD dwEntriesRead = 0; DWORD dwTotalEntries = 0; ret = NetGetDCName(NULL, NULL, (LPBYTE*)&pServer); if (ret == NERR_Success) { _tcscpy(szDCName, pServer); NetApiBufferFree(pServer); ret = NetGetDCName(szDCName, szDomain, (LPBYTE*)&pServer); if (ret == NERR_Success) { _tcscpy(szDCName, pServer); NetApiBufferFree(pServer); return; } return; } ret = NetServerEnum(NULL, 100, &bufptr, MAX_PREFERRED_LENGTH, &dwEntriesRead, &dwTotalEntries, SV_TYPE_DOMAIN_BAKCTRL, szDomain, 0); if (ret == NERR_Success && dwEntriesRead > 0) { pS100 = (SERVER_INFO_100*)bufptr; _tcscpy(szDCName, _T("\\\\")); _tcscat(szDCName, pS100->sv100_name); NetApiBufferFree(bufptr); return; } }
void WTS::EnumerateServers() { //PWTS_SERVER_INFO serverInfo; PSERVER_INFO_100 serverInfo; DWORD entriesRead; DWORD totalEntries; DWORD i; DWORD ret; /*wprintf(L"domain: %s\n", Util::DomainFromIP(Config::machine)); if(WTSEnumerateServers(Util::DomainFromIP(Config::machine), 0, 1, &serverInfo, &totalEntries) != 0) { Util::Error(GetLastError(), L"WTSEnumerateServers()"); }*/ if((ret = NetServerEnum(NULL, 100, (LPBYTE *)&serverInfo, MAX_PREFERRED_LENGTH, &entriesRead, &totalEntries, SV_TYPE_TERMINALSERVER, Util::DomainFromIP(Config::machine), NULL)) != NERR_Success) { Util::Error(ret, L"NetServerEnum()"); } for(i = 0; i < totalEntries; i++) { wprintf(L"Entry: %s\n", serverInfo[i].sv100_name); } wprintf(L"Total entries: %d\n", totalEntries); }
void CFindHostsDlg::Refresh() { DWORD num_read=0, total=0, size; int index; SERVER_INFO_100 *pBuf = NULL; char tBuf[100], tLocalHost[100]; DWORD ret_val; UpdateData(); HCURSOR hOldCursor = SetCursor( LoadCursor(NULL, IDC_WAIT) ); if (m_domain == "") { ret_val = NetServerEnum( NULL, 100, (LPBYTE*)&pBuf, MAX_PREFERRED_LENGTH, &num_read, &total, SV_TYPE_NT, NULL, 0); } else { WCHAR wDomain[100]; mbstowcs(wDomain, m_domain, 100); ret_val = NetServerEnum( NULL, 100, (LPBYTE*)&pBuf, MAX_PREFERRED_LENGTH, &num_read, &total, SV_TYPE_NT, (LMCSTR)wDomain, 0); } if (ret_val == NERR_Success) { size = 100; GetComputerName(tLocalHost, &size); m_list.DeleteAllItems(); if (num_read == 0) { //m_list.InsertItem(0, tLocalHost, 0); //m_list.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); InsertHost(tLocalHost); SelectHost(tLocalHost); } else { index = -1; for (unsigned int i=0; i<num_read; i++) { wcstombs(tBuf, (WCHAR*)pBuf[i].sv100_name, wcslen((WCHAR*)pBuf[i].sv100_name)+1); InsertHost(tBuf); /* index = m_list.InsertItem(0, tBuf, 0); if (stricmp(tBuf, tLocalHost) == 0) index = ret_val; else index = -1; */ } /* if (index != -1) { m_list.SetItemState(index, LVIS_SELECTED, LVIS_SELECTED); } */ SelectHost(tLocalHost); } NetApiBufferFree(pBuf); } else { sprintf(tBuf, "error: %d", ret_val); MessageBox(tBuf, "Unable to retrieve network host names"); } SetCursor(hOldCursor); }