1module srvsvc
2
3option autoalign True
4option relative False
5option recurse True
6option foo blah
7
8#define BOOL uint32
9#define LONG uint32
10#define DWORD uint32
11#define STATUS uint32
12
13typedef struct _UNISTR2 {
14       uint32 max_len;
15       uint32 undoc;
16       uint32 str_len;
17       wchar  buffer[str_len];
18} UNISTR2;
19
20struct LPWSTR {
21       UNISTR2 *str;
22};
23
24
25
26	/* -- CHARACTER DEVICE INFORMATION -- */
27
28	typedef struct _CHARDEV_INFO_0 {
29		LPWSTR  pszName;
30	} CHARDEV_INFO_0;
31
32	typedef struct _CHARDEV_INFO_1 {
33		LPWSTR  pszName;
34		DWORD   dwStatus;
35		LPWSTR  pszUser;
36		DWORD   dwTime;
37	} CHARDEV_INFO_1;
38
39	typedef union _CHARDEV_INFO switch (DWORD dwLevel) ctr {
40		case 1: CHARDEV_INFO_0 *ci0;
41		case 2: CHARDEV_INFO_1 *ci1;
42	} CHARDEV_INFO;
43
44	typedef struct _CHARDEV_ENUM_0 {
45		DWORD   dwEntries;
46		[size_is(dwEntries)] CHARDEV_INFO_0 *ci0;
47	} CHARDEV_ENUM_0;
48
49	typedef struct _CHARDEV_ENUM_1 {
50		DWORD   dwEntries;
51		[size_is(dwEntries)] CHARDEV_INFO_1 *ci1;
52	} CHARDEV_ENUM_1;
53
54	typedef struct _CHARDEV_ENUM {
55		DWORD dwLevel;
56		[switch_is(dwLevel)] union {
57			[case(0)] CHARDEV_ENUM_0 *ce0;
58			[case(1)] CHARDEV_ENUM_1 *ce1;
59		} ctr;
60	} CHARDEV_ENUM;
61
62	STATUS NetrCharDevEnum(    /* Function 0x00 */
63	              [in,unique] LPWSTR        pszServer,
64	                 [in,out] CHARDEV_ENUM* pCharDevEnum,
65	                     [in] DWORD         dwMaxLen,
66	                    [out] DWORD*        dwEntries,
67	                 [in,out] DWORD*        hResume
68						 );
69
70	STATUS NetrCharDevGetInfo(     /* Function 0x01 */
71	              [in,unique] LPWSTR        pszServer,
72	                 [in,ref] LPWSTR        pszDevice,
73	                     [in] DWORD         dwLevel,
74	                    [out] CHARDEV_INFO* pCharDevInfo
75	                      );
76
77	STATUS NetrCharDevControl(     /* Function 0x02 */
78	              [in,unique] LPWSTR pszServer,
79	                 [in,ref] LPWSTR pszDevice,
80	                     [in] DWORD  dwOpcode
81	                      );
82
83	/* -- CHARACTER DEVICE QUEUE INFORMATION -- */
84
85	typedef struct _CHARDEVQ_INFO_0 {
86		LPWSTR  pszName;
87	} CHARDEVQ_INFO_0;
88
89	typedef struct _CHARDEVQ_INFO_1 {
90		LPWSTR  pszName;
91		DWORD   dwPriority;
92		LPWSTR  pszDevices;
93		DWORD   dwNumUsers;
94		DWORD   dwNumAhead;
95	} CHARDEVQ_INFO_1;
96
97	typedef union _CHARDEVQ_INFO switch (DWORD dwLevel) ctr {
98		case 1: CHARDEVQ_INFO_0 *ci0;
99		case 2: CHARDEVQ_INFO_1 *ci1;
100	} CHARDEVQ_INFO;
101
102	typedef struct _CHARDEVQ_ENUM_0 {
103		DWORD   dwEntries;
104		[size_is(dwEntries)] CHARDEVQ_INFO_0 *ci0;
105	} CHARDEVQ_ENUM_0;
106
107	typedef struct _CHARDEVQ_ENUM_1 {
108		DWORD   dwEntries;
109		[size_is(dwEntries)] CHARDEVQ_INFO_1 *ci1;
110	} CHARDEVQ_ENUM_1;
111
112	typedef struct _CHARDEVQ_ENUM {
113		DWORD dwLevel;
114		[switch_is(dwLevel)] union {
115			[case(0)] CHARDEVQ_ENUM_0 *ce0;
116			[case(1)] CHARDEVQ_ENUM_1 *ce1;
117		} ctr;
118	} CHARDEVQ_ENUM;
119
120	STATUS NetrCharDevQEnum(       /* Function 0x03 */
121	              [in,unique] LPWSTR         pszServer,
122	              [in,unique] LPWSTR         pszUser,
123	                 [in,out] CHARDEVQ_ENUM* pCharDevQEnum,
124	                     [in] DWORD          dwMaxLen,
125	                    [out] DWORD*         dwEntries,
126	                 [in,out] DWORD*         hResume
127						    );
128
129	STATUS NetrCharDevQGetInfo(    /* Function 0x04 */
130	              [in,unique] LPWSTR         pszServer,
131	                 [in,ref] LPWSTR         pszQueue,
132	                 [in,ref] LPWSTR         pszUser,
133	                     [in] DWORD          dwLevel,
134	                    [out] CHARDEVQ_INFO* pCharDevQInfo
135	                           );
136
137	STATUS NetrCharDevQSetInfo(    /* Function 0x05 */
138	              [in,unique] LPWSTR         pszServer,
139	                 [in,ref] LPWSTR         pszQueue,
140	                     [in] DWORD          dwLevel,
141	                     [in] CHARDEVQ_INFO* pCharDevQInfo,
142	                 [in,out] DWORD*         dwParmError
143	                           );
144
145	STATUS NetrCharDevQPurge(      /* Function 0x06 */
146	              [in,unique] LPWSTR pszServer,
147	                 [in,ref] LPWSTR pszQueue
148	                         );
149
150	STATUS NetrCharDevQPurgeSelf(  /* Function 0x07 */
151	              [in,unique] LPWSTR pszServer,
152				     [in,ref] LPWSTR pszQueue,
153				     [in,ref] LPWSTR pszComputer
154	                             );
155
156	/* -- CONNECTION INFORMATION -- */
157
158	typedef struct _CONNECTION_INFO_0 {
159		DWORD  dwConnID;
160	} CONNECTION_INFO_0;
161
162	typedef struct _CONNECTION_INFO_1 {
163		DWORD  dwConnID;
164		DWORD  dwType;
165		DWORD  dwNumOpens;
166		DWORD  dwNumUsers;
167		DWORD  dwTime;
168		LPWSTR pszUser;
169		LPWSTR pszShare;
170	} CONNECTION_INFO_1;
171
172	typedef struct _CONNECTION_ENUM_0 {
173		DWORD   dwEntries;
174		[size_is(dwEntries)] CONNECTION_INFO_0 *ci0;
175	} CONNECTION_ENUM_0;
176
177	typedef struct _CONNECTION_ENUM_1 {
178		DWORD   dwEntries;
179		[size_is(dwEntries)] CONNECTION_INFO_1 *ci1;
180	} CONNECTION_ENUM_1;
181
182	typedef struct _CONNECTION_ENUM {
183		DWORD dwLevel;
184		[switch_is(dwLevel)] union {
185			[case(0)] CONNECTION_ENUM_0 *ce0;
186			[case(1)] CONNECTION_ENUM_1 *ce1;
187		} ctr;
188	} CONNECTION_ENUM;
189
190	STATUS NetrConnectionEnum(     /* Function 0x08 */
191	              [in,unique] LPWSTR           pszServer,
192	              [in,unique] LPWSTR           pszClient,
193	                 [in,out] CONNECTION_ENUM* pConnectionEnum,
194	                     [in] DWORD            dwMaxLen,
195	                    [out] DWORD*           dwEntries,
196	                 [in,out] DWORD*           hResume
197	                          );
198
199	/* -- FILE INFORMATION -- */
200
201	typedef struct _FILE_INFO_2 {
202		DWORD  dwFileID;
203	} FILE_INFO_2;
204
205	typedef struct _FILE_INFO_3 {
206		DWORD  dwFileID;
207		DWORD  dwPermissions;
208		DWORD  dwNumLocks;
209		LPWSTR pszPath;
210		LPWSTR pszUser;
211	} FILE_INFO_3;
212
213	typedef union _FILE_INFO switch (DWORD dwLevel) ctr {
214		case 2: FILE_INFO_2 *fi2;
215		case 3: FILE_INFO_3 *fi3;
216	} FILE_INFO;
217
218	typedef struct _FILE_ENUM_2 {
219		DWORD   dwEntries;
220		[size_is(dwEntries)] FILE_INFO_2 *fi2;
221	} FILE_ENUM_2;
222
223	typedef struct _FILE_ENUM_3 {
224		DWORD   dwEntries;
225		[size_is(dwEntries)] FILE_INFO_3 *fi3;
226	} FILE_ENUM_3;
227
228	typedef struct _FILE_ENUM {
229		DWORD dwLevel;
230		[switch_is(dwLevel)] union {
231			[case(2)] FILE_ENUM_2 *fe2;
232			[case(3)] FILE_ENUM_3 *fe3;
233		} ctr;
234	} FILE_ENUM;
235
236	STATUS NetrFileEnum(           /* Function 0x09 */
237	              [in,unique] LPWSTR     pszServer,
238	              [in,unique] LPWSTR     pszBasePath,
239	              [in,unique] LPWSTR     pszUser,
240	                 [in,out] FILE_ENUM* pFileEnum,
241	                     [in] DWORD      dwMaxLen,
242	                    [out] DWORD*     dwEntries,
243	                 [in,out] DWORD*     hResume
244	                     );
245
246	STATUS NetrFileGetInfo(        /* Function 0x0A */
247	              [in,unique] LPWSTR     pszServer,
248	                     [in] DWORD      dwFileID,
249	                     [in] DWORD      dwLevel,
250	                    [out] FILE_INFO* pFileInfo
251	                       );
252
253	STATUS NetrFileClose(          /* Function 0x0B */
254	              [in,unique] LPWSTR pszServer,
255	                     [in] DWORD  dwFileID
256	                     );
257
258	/* -- SESSION INFORMATION -- */
259
260	typedef struct _SESSION_INFO_0 {
261		LPWSTR  pszClient;
262	} SESSION_INFO_0;
263
264	typedef struct _SESSION_INFO_1 {
265		LPWSTR  pszClient;
266		LPWSTR  pszUser;
267		DWORD   dwOpens;
268		DWORD   dwTime;
269		DWORD   dwIdleTime;
270		DWORD   dwUserFlags;
271	} SESSION_INFO_1;
272
273	typedef struct _SESSION_INFO_2 {
274		LPWSTR  pszClient;
275		LPWSTR  pszUser;
276		DWORD   dwOpens;
277		DWORD   dwTime;
278		DWORD   dwIdleTime;
279		DWORD   dwUserFlags;
280	    LPWSTR  pszClientType;
281	} SESSION_INFO_2;
282
283	typedef struct _SESSION_ENUM_0 {
284		DWORD   dwEntries;
285		[size_is(dwEntries)] SESSION_INFO_0 *si0;
286	} SESSION_ENUM_0;
287
288	typedef struct _SESSION_ENUM_1 {
289		DWORD   dwEntries;
290		[size_is(dwEntries)] SESSION_INFO_1 *si1;
291	} SESSION_ENUM_1;
292
293	typedef struct _SESSION_ENUM_2 {
294		DWORD   dwEntries;
295		[size_is(dwEntries)] SESSION_INFO_2 *si2;
296	} SESSION_ENUM_2;
297
298	typedef struct _SESSION_ENUM {
299		DWORD dwLevel;
300		[switch_is(dwLevel)] union {
301			[case(0)] SESSION_ENUM_0 *se0;
302			[case(1)] SESSION_ENUM_1 *se1;
303			[case(2)] SESSION_ENUM_2 *se2;
304		} ctr;
305	} SESSION_ENUM;
306
307	STATUS NetrSessionEnum(        /* Function 0x0C */
308	              [in,unique] LPWSTR        pszServer,
309	              [in,unique] LPWSTR        pszClient,
310	              [in,unique] LPWSTR        pszUser,
311	                 [in,out] SESSION_ENUM* pFileEnum,
312	                     [in] DWORD         dwMaxLen,
313	                    [out] DWORD*        dwEntries,
314	                 [in,out] DWORD*        hResume	
315	                     );
316
317	STATUS NetrSessionDel(         /* Function 0x0D */
318	              [in,unique] LPWSTR pszServer,
319	                 [in,ref] LPWSTR pszClient,
320	                 [in,ref] LPWSTR pszUser
321	                      );
322
323	/* -- SHARE INFORMATION -- */
324
325	typedef struct _SHARE_INFO_0 {
326		LPWSTR  pszName;
327	} SHARE_INFO_0;
328
329	typedef struct _SHARE_INFO_1 {
330		LPWSTR  pszName;
331		DWORD   dwType;
332		LPWSTR  pszComment;
333	} SHARE_INFO_1;
334
335	typedef struct _SHARE_INFO_2 {
336		LPWSTR  pszName;
337		DWORD   dwType;
338		LPWSTR  pszComment;
339		DWORD   dwPermissions;
340		DWORD   dwMaxUses;
341		DWORD   dwCurrentUses;
342		LPWSTR  pszPath;
343		LPWSTR  pszPasswd;
344	} SHARE_INFO_2;
345
346	typedef union _SHARE_INFO switch (DWORD dwLevel) ctr {
347		case 0: SHARE_INFO_0 *si0;
348		case 1: SHARE_INFO_1 *si1;
349		case 2: SHARE_INFO_2 *si2;
350	} SHARE_INFO;
351
352	typedef struct _SHARE_ENUM_0 {
353		DWORD   dwEntries;
354		[size_is(dwEntries)] SHARE_INFO_0 *si0;
355	} SHARE_ENUM_0;
356
357	typedef struct _SHARE_ENUM_1 {
358		DWORD   dwEntries;
359		[size_is(dwEntries)] SHARE_INFO_1 *si1;
360	} SHARE_ENUM_1;
361
362	typedef struct _SHARE_ENUM_2 {
363		DWORD   dwEntries;
364		[size_is(dwEntries)] SHARE_INFO_2 *si2;
365	} SHARE_ENUM_2;
366
367	typedef struct _SHARE_ENUM {
368		DWORD dwLevel;
369		[switch_is(dwLevel)] union {
370			[case(0)] SHARE_ENUM_0 *se0;
371			[case(1)] SHARE_ENUM_1 *se1;
372			[case(2)] SHARE_ENUM_2 *se2;
373		} ctr;
374	} SHARE_ENUM;
375
376	STATUS NetrShareAdd(           /* Function 0x0E */
377	              [in,unique] LPWSTR      pszServer,
378	                     [in] DWORD       dwLevel,
379	                    [out] SHARE_INFO* pShareInfo,
380	                 [in,out] DWORD*      dwParmError
381	                    );
382
383	STATUS NetrShareEnum(          /* Function 0x0F */
384	              [in,unique] LPWSTR       pszServer,
385	                 [in,out] SHARE_ENUM*  pShareEnum,
386	                     [in] DWORD        dwMaxLen,
387	                    [out] DWORD*       dwEntries,
388	                 [in,out] DWORD*       hResume
389						 );
390
391	STATUS NetrShareGetInfo(       /* Function 0x10 */
392	              [in,unique] LPWSTR       pszServer,
393	                 [in,ref] LPWSTR       pszShare,
394	                     [in] DWORD        dwLevel,
395	                    [out] SHARE_INFO*  pShareInfo
396	                      );
397
398	STATUS NetrShareSetInfo(       /* Function 0x11 */
399	              [in,unique] LPWSTR       pszServer,
400	                 [in,ref] LPWSTR       pszShare,
401	                     [in] DWORD        dwLevel,
402	                     [in] SHARE_INFO*  pShareInfo,
403	                     [in] DWORD        dwReserved
404	                      );
405
406	STATUS NetrShareDel(           /* Function 0x12 */
407	              [in,unique] LPWSTR pszServer,
408	                 [in,ref] LPWSTR pszShare,
409	                     [in] DWORD  dwReserved
410	                    );
411
412	STATUS NetrShareDelSticky(     /* Function 0x13 */
413	              [in,unique] LPWSTR pszServer,
414	                 [in,ref] LPWSTR pszShare,
415	                     [in] DWORD  dwReserved
416	                          );
417
418	STATUS NetrShareCheck(         /* Function 0x14 */
419	              [in,unique] LPWSTR pszServer,
420	                 [in,ref] LPWSTR pszDevice,
421	                    [out] DWORD* dwType
422	                      );
423
424	/* --- SERVER INFORMATION --- */
425
426	typedef struct _SERVER_INFO_100 {
427		DWORD  dwPlatformID;
428		LPWSTR pszName;
429	} SERVER_INFO_100;
430
431	typedef struct _SERVER_INFO_101 {
432	    DWORD  dwPlatformID;
433	    LPWSTR pszName;
434	    DWORD  dwVerMajor;
435	    DWORD  dwVerMinor;
436	    DWORD  dwType;
437	    LPWSTR pszComment;
438	} SERVER_INFO_101;
439
440	typedef struct _SERVER_INFO_102 {
441	    DWORD  dwPlatformID;
442	    LPWSTR pszName;
443	    DWORD  dwVerMajor;
444	    DWORD  dwVerMinor;
445	    DWORD  dwType;
446	    LPWSTR pszComment;
447		DWORD  dwUsers;
448		LONG   lDisc;
449		BOOL   bHidden;
450		DWORD  dwAnnounce;
451		DWORD  dwAnnDelta;
452		DWORD  dwLicenses;
453		LPWSTR pszUserPath;
454	} SERVER_INFO_102;
455
456	typedef union _SERVER_INFO switch (DWORD dwLevel) ctr {
457		case 100: SERVER_INFO_100 *sv100;
458		case 101: SERVER_INFO_101 *sv101;
459		case 102: SERVER_INFO_102 *sv102;
460	} SERVER_INFO;
461
462	STATUS NetrServerGetInfo(      /* Function 0x15 */
463	              [in,unique] LPWSTR       pszServerName,
464	                     [in] DWORD        dwLevel,
465	                    [out] SERVER_INFO* pServerInfo
466	                      );
467
468	STATUS NetrServerSetInfo(      /* Function 0x16 */
469	              [in,unique] LPWSTR       pszServerName,
470	                     [in] DWORD        dwLevel,
471	                     [in] SERVER_INFO* pServerInfo,
472	                     [in] DWORD        dwReserved
473	                      );
474
475	typedef struct _DISK_INFO {
476		LPWSTR  pszName;
477	} DISK_INFO;
478
479	typedef struct _DISK_ENUM {
480		DWORD   dwEntries;
481		[size_is(dwEntries)] DISK_INFO *di;
482	} DISK_ENUM;
483
484	STATUS NetrServerDiskEnum(     /* Function 0x17 */
485	              [in,unique] LPWSTR       pszServer,
486	                     [in] DWORD        dwLevel,
487	                 [in,out] DISK_ENUM*   pDiskEnum,
488	                     [in] DWORD        dwMaxLen,
489	                    [out] DWORD*       dwEntries,
490	                 [in,out] DWORD*       hResume
491	                          );
492
493	typedef struct _STAT_SERVER {
494		DWORD dwStart;
495		DWORD dwFOpens;
496		DWORD dwDevOpens;
497		DWORD dwJobsQueued;
498		DWORD dwSOpens;
499		DWORD dwSTimedOut;
500		DWORD dwSErrors;
501		DWORD dwPWErrors;
502		DWORD dwPermErrors;
503		DWORD dwSysErrors;
504		DWORD dwBytesSentLow;
505		DWORD dwBytesSentHigh;
506		DWORD dwBytesRcvdLow;
507		DWORD dwBytesRcvdHigh;
508		DWORD dwAVResponse;
509		DWORD dwReqBufNeed;
510		DWORD dwBigBufNeed;
511	} STAT_SERVER;
512
513	STATUS NetrServerStatisticsGet( /* Function 0x18 */
514	              [in,unique] LPWSTR       pszServer,
515	                     [in] DWORD        dwLevel,
516	                     [in] DWORD        dwOptions,
517	                    [out] STAT_SERVER* pStatServer
518	                               );
519
520	typedef struct _TRANSPORT_INFO_0 {
521		LPWSTR  pszName;
522	} TRANSPORT_INFO_0;
523
524	typedef union _TRANSPORT_INFO switch (DWORD dwLevel) ctr {
525		case 0: TRANSPORT_INFO_0 *ti0;
526	} TRANSPORT_INFO;
527
528	typedef struct _TRANSPORT_ENUM_0 {
529		DWORD   dwEntries;
530		[size_is(dwEntries)] TRANSPORT_INFO_0 *ti0;
531	} TRANSPORT_ENUM_0;
532
533	typedef struct _TRANSPORT_ENUM {
534		DWORD dwLevel;
535		[switch_is(dwLevel)] union {
536			[case(0)] TRANSPORT_ENUM_0 *te0;
537		} ctr;
538	} TRANSPORT_ENUM;
539
540	STATUS NetrServerTransportAdd( /* Function 0x19 */
541	              [in,unique] LPWSTR          pszServer,
542	                     [in] DWORD           dwLevel,
543	                    [out] TRANSPORT_INFO* pTransportInfo
544	                              );
545
546	STATUS NetrServerTransportEnum( /* Function 0x1a */
547	              [in,unique] LPWSTR          pszServer,
548	                 [in,out] TRANSPORT_ENUM* pTransportEnum,
549	                     [in] DWORD           dwMaxLen,
550	                    [out] DWORD*          dwEntries,
551	                 [in,out] DWORD*          hResume
552	                               );
553
554	STATUS NetrServerTransportDel( /* Function 0x1b */
555	              [in,unique] LPWSTR          pszServer,
556	                     [in] DWORD           dwLevel,
557	                    [out] TRANSPORT_INFO* pTransportInfo
558	                              );
559
560	typedef struct _TIME_OF_DAY {
561		DWORD dwElapsedTime;
562		DWORD dwMsecs;
563		DWORD dwHours;
564		DWORD dwMins;
565		DWORD dwSecs;
566		DWORD dwHunds;
567		LONG  lTimeZone;
568		DWORD dwInterval;
569		DWORD dwDay;
570		DWORD dwMonth;
571		DWORD dwYear;
572		DWORD dwWeekday;
573	} TIME_OF_DAY;
574
575	STATUS NetrRemoteTOD(          /* Function 0x1c */
576	              [in,unique] LPWSTR       pszServer,
577	                    [out] TIME_OF_DAY* pTOD
578	);
579
580	STATUS NetrServerSetServiceBits( /* Function 0x1d */
581	              [in,unique] LPWSTR pszServer,
582	                     [in] DWORD  hServiceStatus, /* ?? */
583	                     [in] DWORD  dwServiceBits,
584	                     [in] BOOL   bSetBitsOn,
585	                     [in] BOOL   bUpdateImmediately
586	                               );
587
588	/* --- PATH INFORMATION --- */
589
590	STATUS NetprPathType(          /* Function 0x1e */
591	                          void /* Not known */
592	                     );
593
594	STATUS NetprPathCanonicalize(  /* Function 0x1f */
595	                          void /* Not known */
596	                             );
597
598	STATUS NetprPathCompare(       /* Function 0x20 */
599	                          void /* Not known */
600	                        );
601
602	STATUS NetprNameValidate(      /* Function 0x21 */
603	                          void /* Not known */
604	                         );
605
606	STATUS NetprNameCanonicalize(  /* Function 0x22 */
607	                          void /* Not known */
608	                             );
609
610	STATUS NetprNameCompare(       /* Function 0x23 */
611	                          void /* Not known */
612	                        );
613
614	/* --- LATER ADDITIONS --- */
615
616	STATUS NetrShareEnumSticky(    /* Function 0x24 */
617	              [in,unique] LPWSTR       pszServer,
618	                 [in,out] SHARE_ENUM*  pShareEnum,
619	                     [in] DWORD        dwMaxLen,
620	                    [out] DWORD*       dwEntries,
621	                 [in,out] DWORD*       hResume
622	                           );
623
624	STATUS NetrShareDelStart(      /* Function 0x25 */
625	              [in,unique] LPWSTR pszServer,
626	                 [in,ref] LPWSTR pszShare,
627	                     [in] DWORD  dwReserved /* ? */
628	                         );
629
630	STATUS NetrShareDelCommit(     /* Function 0x26 */
631	              [in,unique] LPWSTR pszServer
632	                          );
633
634	STATUS NetrpGetFileSecurity(   /* Function 0x27 */
635	                          void /* Not known */
636	                            );
637
638	STATUS NetrpSetFileSecurity(   /* Function 0x28 */
639	                          void /* Not known */
640	                            );
641
642	STATUS NetrServerTransportAddEx( /* Function 0x29 */
643	              [in,unique] LPWSTR          pszServer,
644	                     [in] DWORD           dwLevel,
645	                    [out] TRANSPORT_INFO* pTransportInfo
646	                                );
647
648	STATUS NetrServerSetServiceBitsEx( /* Function 0x30 */
649	              [in,unique] LPWSTR pszServer,
650	                     [in] DWORD  hServiceStatus, /* ?? */
651	                     [in] DWORD  dwServiceBits,
652	                     [in] BOOL   bSetBitsOn,
653	                     [in] BOOL   bUpdateImmediately
654	                                  );
655
656