Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

215 lines
7.0 KiB

  1. //
  2. // browsesrv.h: browse for servers list box
  3. //
  4. #ifndef _BROWSESRV_H_
  5. #define _BROWSESRV_H_
  6. #define BROWSE_MAX_ADDRESS_LENGTH 256
  7. #define BROWSE_MAX_DOMAIN_LENGTH 52
  8. #ifdef OS_WIN32
  9. #define NET_API_STATUS DWORD
  10. #define NET_API_FUNCTION __stdcall
  11. #ifndef OS_WINCE
  12. #include <lmaccess.h>
  13. #include <lmserver.h>
  14. #include <lmwksta.h>
  15. #include <lmerr.h>
  16. #include <lmapibuf.h>
  17. #include <dsgetdc.h>
  18. #else
  19. #include <winnetwk.h>
  20. #endif // OS_WINCE
  21. #include <commctrl.h>
  22. #endif //OS_WIN32
  23. #ifndef OS_WINCE
  24. #include <serverenum.h>
  25. #endif // OS_WINCE
  26. #define SV_TYPE_APPSERVER 0x10000000
  27. #define SV_TYPE_TERMINALSERVER 0x02000000
  28. // BUBBUG - Need to fix this for Beta 2 by removing the APPSERVER bit.
  29. #define HYDRA_SERVER_LANMAN_BITS (SV_TYPE_TERMINALSERVER | SV_TYPE_APPSERVER)
  30. #define XBMPOFFSET 2
  31. #define DISPLAY_MAP_TRANS_COLOR RGB(0x00, 0xFF, 0x00 )
  32. #ifndef OS_WINCE
  33. static TCHAR DOMAIN_KEY[] = _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon");
  34. static TCHAR PRIMARY_VAL[] = _T("CachePrimaryDomain");
  35. #else
  36. static TCHAR DOMAIN_KEY[] = _T("Comm\\Redir");
  37. static TCHAR PRIMARY_VAL[] = _T("DefaultDomain");
  38. #endif
  39. static TCHAR CACHE_VAL[] = _T("DCache");
  40. static TCHAR CACHE_VAL_NT351[] = _T("CacheTrustedDomains");
  41. #define MAX_COMMENT_LENGTH 64
  42. #define SRV_TREE_DOMAINLEVEL 1
  43. #define SRV_TREE_SERVERLEVEL 2
  44. typedef struct tagServerListItem
  45. {
  46. DCTCHAR ContainerName[BROWSE_MAX_ADDRESS_LENGTH];
  47. DCTCHAR Comment[MAX_COMMENT_LENGTH];
  48. DCBOOL bContainsServers;
  49. DCBOOL bServersExpandedOnce;
  50. DCBOOL bDNSDomain;
  51. DWORD nServerCount;
  52. struct tagServerListItem *ServerItems;
  53. HTREEITEM hTreeParentItem;
  54. HTREEITEM hTreeItem;
  55. } ServerListItem;
  56. class CBrowseServersCtl
  57. {
  58. public:
  59. //
  60. // Public member functions
  61. //
  62. CBrowseServersCtl(HINSTANCE hResInstance);
  63. ~CBrowseServersCtl();
  64. BOOL Init(HWND hwndDlg);
  65. BOOL Cleanup();
  66. DCINT AddRef();
  67. DCINT Release();
  68. #ifdef OS_WIN32
  69. void LoadLibraries(void);
  70. #endif //OS_WIN32
  71. ServerListItem* PopulateListBox(HWND hwndDlg, DCUINT *pDomainCount);
  72. ServerListItem* PopulateListBoxNT(HWND hwndDlg, DCUINT *pDomainCount);
  73. #ifndef OS_WINCE
  74. ServerListItem* PopulateListBox95(HWND hwndDlg, DCUINT *pDomainCount);
  75. #endif
  76. DCVOID UIDrawListBox(LPDRAWITEMSTRUCT pDIS);
  77. int ExpandDomain(HWND hwndDlg, TCHAR *pDomainName,
  78. ServerListItem *plbi, DWORD *pdwIndex);
  79. DCVOID SetEventHandle(HANDLE hEvent) {_hEvent = hEvent;}
  80. DCVOID SetDialogHandle(HWND hwndDialog) {_hwndDialog = hwndDialog;}
  81. static DWORD WINAPI UIStaticPopListBoxThread(LPVOID lpvThreadParm);
  82. DWORD WINAPI UIPopListBoxThread(LPVOID lpvThreadParm);
  83. //
  84. // Handle tree view notifications (WM_NOTIFY) from parent
  85. //
  86. BOOL OnNotify( HWND hwndDlg, WPARAM wParam, LPARAM lParam);
  87. //Handle TVN_ITEMEXPANDING
  88. BOOL OnItemExpanding(HWND hwndDlg, LPNMTREEVIEW nmTv);
  89. BOOL GetServer(LPTSTR szServer, int cchLen);
  90. private:
  91. //
  92. // Private member functions
  93. //
  94. static DWORD near RGB2BGR(DWORD rgb)
  95. {
  96. return RGB(GetBValue(rgb),GetGValue(rgb),GetRValue(rgb));
  97. }
  98. #ifdef OS_WIN32
  99. PDCTCHAR UIGetTrustedDomains();
  100. #endif
  101. int UIExpandDNSDomain(HWND hwndDlg, TCHAR *pDomainName,
  102. ServerListItem *plbi, DWORD *pdwIndex);
  103. #ifdef OS_WIN32
  104. #ifndef OS_WINCE
  105. int ExpandDomainNT(HWND hwndDlg, TCHAR *pDomainName,
  106. ServerListItem *plbi, DWORD *pdwIndex);
  107. int ExpandDomain95(HWND hwndDlg, TCHAR *pDomainName,
  108. ServerListItem *plbi, DWORD *pdwIndex);
  109. #else
  110. int ExpandDomainCE(HWND hwndDlg, TCHAR *pDomainName, ServerListItem *plbi, DWORD *pdwIndex);
  111. #endif
  112. #else
  113. int ExpandDomain16(HWND hwndDlg, TCHAR *pDomainName,
  114. ServerListItem *plbi, DWORD *pdwIndex);
  115. #endif
  116. HTREEITEM AddItemToTree( HWND hwndTV, LPTSTR lpszItem,
  117. HTREEITEM hParent, ServerListItem* pItem,
  118. int nLevel);
  119. private:
  120. //
  121. // Private member data
  122. //
  123. DCINT _refCount;
  124. HINSTANCE _hInst;
  125. DCBOOL _fbrowseDNSDomain;
  126. DCUINT8 _browseDNSDomainName[BROWSE_MAX_DOMAIN_LENGTH];
  127. HWND _hwndDialog;
  128. HANDLE _hEvent;
  129. //
  130. // Function pointers for network functions.
  131. //
  132. BOOL bIsWin95;
  133. HINSTANCE hLibrary;
  134. #ifndef OS_WINCE
  135. typedef NET_API_STATUS (NET_API_FUNCTION *LPFNNETSERVERENUM)(LPTSTR,DWORD,LPBYTE *,DWORD,LPDWORD,LPDWORD,DWORD,
  136. LPTSTR,LPDWORD);
  137. LPFNNETSERVERENUM lpfnNetServerEnum;
  138. typedef NET_API_STATUS (NET_API_FUNCTION *LPFNNETAPIBUFFERFREE)(LPVOID);
  139. LPFNNETAPIBUFFERFREE lpfnNetApiBufferFree;
  140. typedef unsigned (far pascal *LPFNNETSERVERENUM2)(const char far *,short,char far *,
  141. unsigned short,unsigned short far *,unsigned short far *,
  142. unsigned long ,char far *);
  143. LPFNNETSERVERENUM2 lpfnNetServerEnum2;
  144. typedef unsigned (far pascal *LPFNNETWKSTAGETINFO)(const char far * pszServer,
  145. short sLevel,char far *pbBuffer,unsigned short cbBuffer,
  146. unsigned short far * pcbTotalAvail);
  147. LPFNNETWKSTAGETINFO lpfnNetWkStaGetInfo;
  148. typedef DWORD (far pascal *LPFNNETWKSTAGETINFO_NT)(const unsigned char far * pszServer,
  149. DWORD dwLevel, unsigned char far ** pBuffer);
  150. LPFNNETWKSTAGETINFO_NT lpfnNetWkStaGetInfo_NT;
  151. typedef DWORD (far pascal *LPFNDSGETDCNAME)(LPCTSTR ComputerName, LPCTSTR DomainName, GUID *DomainGuid,
  152. LPCTSTR SiteName, ULONG Flags,
  153. PDOMAIN_CONTROLLER_INFO *DomainControllerInfo);
  154. LPFNDSGETDCNAME lpfnDsGetDcName;
  155. typedef NET_API_STATUS (NET_API_FUNCTION *LPFNNETENUMERATETRUSTEDDOMAINS)(LPWSTR ServerName, LPWSTR* domainNames );
  156. LPFNNETENUMERATETRUSTEDDOMAINS lpfnNetEnumerateTrustedDomains;
  157. #else
  158. typedef DWORD (far pascal *LPFNWNETOPENENUM)(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE);
  159. LPFNWNETOPENENUM lpfnWNetOpenEnum;
  160. typedef DWORD (far pascal *LPFNWNETENUMRESOURCE)(HANDLE, LPDWORD, LPVOID, LPDWORD);
  161. LPFNWNETENUMRESOURCE lpfnWNetEnumResource;
  162. typedef DWORD (far pascal *LPFNWNETCLOSEENUM)(HANDLE);
  163. LPFNWNETCLOSEENUM lpfnWNetCloseEnum;
  164. #endif
  165. int _nServerImage;
  166. int _nDomainImage;
  167. int _nDomainSelectedImage;
  168. HTREEITEM _hPrev ;
  169. HTREEITEM _hPrevRootItem;
  170. HTREEITEM _hPrevLev2Item;
  171. };
  172. #endif //_BROWSESRV_H_