2 * COPYRIGHT: See COPYING in the top level directory
4 * FILE: dll/win32/netapi32/browser.c
5 * PURPOSE: Computer Browser service interface code
6 * PROGRAMMERS: Eric Kohl (eric.kohl@reactos.org)
9 /* INCLUDES ******************************************************************/
16 #include "browser_c.h"
19 WINE_DEFAULT_DEBUG_CHANNEL(netapi32
);
21 /* FUNCTIONS *****************************************************************/
24 BROWSER_IDENTIFY_HANDLE_bind(BROWSER_IDENTIFY_HANDLE pszSystemName
)
26 handle_t hBinding
= NULL
;
27 LPWSTR pszStringBinding
;
30 TRACE("BROWSER_IDENTIFY_HANDLE_bind() called\n");
32 status
= RpcStringBindingComposeW(NULL
,
40 TRACE("RpcStringBindingCompose returned 0x%x\n", status
);
44 /* Set the binding handle that will be used to bind to the server. */
45 status
= RpcBindingFromStringBindingW(pszStringBinding
,
49 TRACE("RpcBindingFromStringBinding returned 0x%x\n", status
);
52 status
= RpcStringFreeW(&pszStringBinding
);
55 // TRACE("RpcStringFree returned 0x%x\n", status);
63 BROWSER_IDENTIFY_HANDLE_unbind(BROWSER_IDENTIFY_HANDLE pszSystemName
,
68 TRACE("BROWSER_IDENTIFY_HANDLE_unbind() called\n");
70 status
= RpcBindingFree(&hBinding
);
73 TRACE("RpcBindingFree returned 0x%x\n", status
);
80 I_BrowserQueryEmulatedDomains(
81 _In_opt_ LPWSTR ServerName
,
82 _Out_ PBROWSER_EMULATED_DOMAIN
*EmulatedDomains
,
83 _Out_ LPDWORD EntriesRead
)
85 BROWSER_EMULATED_DOMAIN_CONTAINER Container
= {0, NULL
};
86 NET_API_STATUS status
;
88 TRACE("I_BrowserQueryEmulatedDomains(%s %p %p)\n",
89 debugstr_w(ServerName
), EmulatedDomains
, EntriesRead
);
91 *EmulatedDomains
= NULL
;
96 status
= I_BrowserrQueryEmulatedDomains(ServerName
,
99 if (status
== NERR_Success
)
101 *EmulatedDomains
= (PBROWSER_EMULATED_DOMAIN
)Container
.Buffer
;
102 *EntriesRead
= Container
.EntriesRead
;
105 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
107 status
= I_RpcMapWin32Status(RpcExceptionCode());
117 I_BrowserQueryOtherDomains(
118 _In_opt_ LPCWSTR ServerName
,
119 _Out_ LPBYTE
*BufPtr
,
120 _Out_ LPDWORD EntriesRead
,
121 _Out_ LPDWORD TotalEntries
)
123 SERVER_INFO_100_CONTAINER Level100Container
= {0, NULL
};
124 SERVER_ENUM_STRUCT EnumStruct
;
125 NET_API_STATUS status
;
127 TRACE("I_BrowserQueryOtherDomains(%s %p %p %p)\n",
128 debugstr_w(ServerName
), BufPtr
, EntriesRead
, TotalEntries
);
130 EnumStruct
.Level
= 100;
131 EnumStruct
.ServerInfo
.Level100
= &Level100Container
;
135 status
= I_BrowserrQueryOtherDomains((PWSTR
)ServerName
,
139 if (status
== NERR_Success
|| status
== ERROR_MORE_DATA
)
141 *BufPtr
= (LPBYTE
)EnumStruct
.ServerInfo
.Level100
->Buffer
;
142 *EntriesRead
= EnumStruct
.ServerInfo
.Level100
->EntriesRead
;
145 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
147 status
= I_RpcMapWin32Status(RpcExceptionCode());
157 I_BrowserQueryStatistics(
158 _In_opt_ LPCWSTR ServerName
,
159 _Inout_ LPBROWSER_STATISTICS
*Statistics
)
161 NET_API_STATUS status
;
163 TRACE("I_BrowserQueryStatistics(%s %p)\n",
164 debugstr_w(ServerName
), Statistics
);
168 status
= I_BrowserrQueryStatistics((PWSTR
)ServerName
,
171 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
173 status
= I_RpcMapWin32Status(RpcExceptionCode());
183 I_BrowserResetStatistics(
184 _In_opt_ LPCWSTR ServerName
)
186 NET_API_STATUS status
;
188 TRACE("I_BrowserResetStatistics(%s)\n",
189 debugstr_w(ServerName
));
193 status
= I_BrowserrResetStatistics((PWSTR
)ServerName
);
195 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
197 status
= I_RpcMapWin32Status(RpcExceptionCode());
207 I_BrowserResetNetlogonState(
208 _In_ LPCWSTR ServerName
)
210 NET_API_STATUS status
;
212 TRACE("I_BrowserResetNetlogonState(%s)\n",
213 debugstr_w(ServerName
));
217 status
= I_BrowserrResetNetlogonState((PWSTR
)ServerName
);
219 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
221 status
= I_RpcMapWin32Status(RpcExceptionCode());
231 I_BrowserSetNetlogonState(
232 _In_ LPWSTR ServerName
,
233 _In_ LPWSTR DomainName
,
234 _In_ LPWSTR EmulatedServerName
,
237 NET_API_STATUS status
;
239 TRACE("I_BrowserSetNetlogonState(%s %s %s %lu)\n",
240 debugstr_w(ServerName
), debugstr_w(ServerName
),
241 debugstr_w(EmulatedServerName
), Role
);
245 status
= I_BrowserrSetNetlogonState(ServerName
,
250 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
252 status
= I_RpcMapWin32Status(RpcExceptionCode());
262 NetBrowserStatisticsGet(
263 _In_ LPWSTR ServerName
,
265 _Out_ LPBYTE
*Buffer
)
267 BROWSER_STATISTICS_STRUCT StatisticsStruct
;
268 BROWSER_STATISTICS_100_CONTAINER Level100Container
= {0, NULL
};
269 BROWSER_STATISTICS_101_CONTAINER Level101Container
= {0, NULL
};
270 NET_API_STATUS status
;
272 TRACE("NetBrowserStatisticsGet(%s %lu %p)\n",
273 debugstr_w(ServerName
), Level
, Buffer
);
275 if (Level
!= 100 && Level
!= 101)
276 return ERROR_INVALID_LEVEL
;
278 StatisticsStruct
.Level
= Level
;
282 StatisticsStruct
.Statistics
.Level100
= &Level100Container
;
286 StatisticsStruct
.Statistics
.Level101
= &Level101Container
;
292 status
= NetrBrowserStatisticsGet(ServerName
,
299 if (StatisticsStruct
.Statistics
.Level100
->Buffer
!= NULL
)
301 *Buffer
= (LPBYTE
)StatisticsStruct
.Statistics
.Level100
->Buffer
;
306 if (StatisticsStruct
.Statistics
.Level101
->Buffer
!= NULL
)
308 *Buffer
= (LPBYTE
)StatisticsStruct
.Statistics
.Level101
->Buffer
;
313 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
315 status
= I_RpcMapWin32Status(RpcExceptionCode());
326 _In_opt_ LMCSTR servername
,
328 _Out_ LPBYTE
*bufptr
,
329 _In_ DWORD prefmaxlen
,
330 _Out_ LPDWORD entriesread
,
331 _Out_ LPDWORD totalentries
,
332 _In_ DWORD servertype
,
333 _In_opt_ LMCSTR domain
,
334 _Inout_opt_ LPDWORD resume_handle
)
336 TRACE("NetServerEnum(%s %lu %p %lu %p %p %lu %s %p)\n",
337 debugstr_w(servername
), level
, bufptr
, prefmaxlen
, entriesread
,
338 totalentries
, servertype
, debugstr_w(domain
), resume_handle
);
340 if (resume_handle
!= NULL
)
343 return NetServerEnumEx(servername
,
358 _In_opt_ LMCSTR ServerName
,
360 _Out_ LPBYTE
*Bufptr
,
361 _In_ DWORD PrefMaxlen
,
362 _Out_ LPDWORD EntriesRead
,
363 _Out_ LPDWORD totalentries
,
364 _In_ DWORD servertype
,
365 _In_opt_ LMCSTR domain
,
366 _In_opt_ LMCSTR FirstNameToReturn
)
368 FIXME("NetServerEnumEx(%s %lu %p %lu %p %p %lu %s %s)\n",
369 debugstr_w(ServerName
), Level
, Bufptr
, PrefMaxlen
, EntriesRead
, totalentries
,
370 servertype
, debugstr_w(domain
), debugstr_w(FirstNameToReturn
));
372 return ERROR_NO_BROWSER_SERVERS_FOUND
;