r398: * update release notes
[Samba.git] / source / aparser / srvsvc2.struct
blob362d121e378256b2472c5438fae089dcbd82ce8c
1 module srvsvc
3 option autoalign True
4 option relative False
5 option recurse True
6 option foo blah
8 #define BOOL uint32
9 #define LONG uint32
10 #define DWORD uint32
11 #define STATUS uint32
13 typedef struct _UNISTR2 {
14        uint32 max_len;
15        uint32 undoc;
16        uint32 str_len;
17        wchar  buffer[str_len];
18 } UNISTR2;
20 struct LPWSTR {
21        UNISTR2 *str;
26         /* -- CHARACTER DEVICE INFORMATION -- */
28         typedef struct _CHARDEV_INFO_0 {
29                 LPWSTR  pszName;
30         } CHARDEV_INFO_0;
32         typedef struct _CHARDEV_INFO_1 {
33                 LPWSTR  pszName;
34                 DWORD   dwStatus;
35                 LPWSTR  pszUser;
36                 DWORD   dwTime;
37         } CHARDEV_INFO_1;
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;
44         typedef struct _CHARDEV_ENUM_0 {
45                 DWORD   dwEntries;
46                 [size_is(dwEntries)] CHARDEV_INFO_0 *ci0;
47         } CHARDEV_ENUM_0;
49         typedef struct _CHARDEV_ENUM_1 {
50                 DWORD   dwEntries;
51                 [size_is(dwEntries)] CHARDEV_INFO_1 *ci1;
52         } CHARDEV_ENUM_1;
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;
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                                                  );
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                               );
77         STATUS NetrCharDevControl(     /* Function 0x02 */
78                       [in,unique] LPWSTR pszServer,
79                          [in,ref] LPWSTR pszDevice,
80                              [in] DWORD  dwOpcode
81                               );
83         /* -- CHARACTER DEVICE QUEUE INFORMATION -- */
85         typedef struct _CHARDEVQ_INFO_0 {
86                 LPWSTR  pszName;
87         } CHARDEVQ_INFO_0;
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;
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;
102         typedef struct _CHARDEVQ_ENUM_0 {
103                 DWORD   dwEntries;
104                 [size_is(dwEntries)] CHARDEVQ_INFO_0 *ci0;
105         } CHARDEVQ_ENUM_0;
107         typedef struct _CHARDEVQ_ENUM_1 {
108                 DWORD   dwEntries;
109                 [size_is(dwEntries)] CHARDEVQ_INFO_1 *ci1;
110         } CHARDEVQ_ENUM_1;
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;
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                                                     );
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                                    );
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                                    );
145         STATUS NetrCharDevQPurge(      /* Function 0x06 */
146                       [in,unique] LPWSTR pszServer,
147                          [in,ref] LPWSTR pszQueue
148                                  );
150         STATUS NetrCharDevQPurgeSelf(  /* Function 0x07 */
151                       [in,unique] LPWSTR pszServer,
152                                      [in,ref] LPWSTR pszQueue,
153                                      [in,ref] LPWSTR pszComputer
154                                      );
156         /* -- CONNECTION INFORMATION -- */
158         typedef struct _CONNECTION_INFO_0 {
159                 DWORD  dwConnID;
160         } CONNECTION_INFO_0;
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;
172         typedef struct _CONNECTION_ENUM_0 {
173                 DWORD   dwEntries;
174                 [size_is(dwEntries)] CONNECTION_INFO_0 *ci0;
175         } CONNECTION_ENUM_0;
177         typedef struct _CONNECTION_ENUM_1 {
178                 DWORD   dwEntries;
179                 [size_is(dwEntries)] CONNECTION_INFO_1 *ci1;
180         } CONNECTION_ENUM_1;
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;
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                                   );
199         /* -- FILE INFORMATION -- */
201         typedef struct _FILE_INFO_2 {
202                 DWORD  dwFileID;
203         } FILE_INFO_2;
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;
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;
218         typedef struct _FILE_ENUM_2 {
219                 DWORD   dwEntries;
220                 [size_is(dwEntries)] FILE_INFO_2 *fi2;
221         } FILE_ENUM_2;
223         typedef struct _FILE_ENUM_3 {
224                 DWORD   dwEntries;
225                 [size_is(dwEntries)] FILE_INFO_3 *fi3;
226         } FILE_ENUM_3;
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;
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                              );
246         STATUS NetrFileGetInfo(        /* Function 0x0A */
247                       [in,unique] LPWSTR     pszServer,
248                              [in] DWORD      dwFileID,
249                              [in] DWORD      dwLevel,
250                             [out] FILE_INFO* pFileInfo
251                                );
253         STATUS NetrFileClose(          /* Function 0x0B */
254                       [in,unique] LPWSTR pszServer,
255                              [in] DWORD  dwFileID
256                              );
258         /* -- SESSION INFORMATION -- */
260         typedef struct _SESSION_INFO_0 {
261                 LPWSTR  pszClient;
262         } SESSION_INFO_0;
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;
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;
283         typedef struct _SESSION_ENUM_0 {
284                 DWORD   dwEntries;
285                 [size_is(dwEntries)] SESSION_INFO_0 *si0;
286         } SESSION_ENUM_0;
288         typedef struct _SESSION_ENUM_1 {
289                 DWORD   dwEntries;
290                 [size_is(dwEntries)] SESSION_INFO_1 *si1;
291         } SESSION_ENUM_1;
293         typedef struct _SESSION_ENUM_2 {
294                 DWORD   dwEntries;
295                 [size_is(dwEntries)] SESSION_INFO_2 *si2;
296         } SESSION_ENUM_2;
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;
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                              );
317         STATUS NetrSessionDel(         /* Function 0x0D */
318                       [in,unique] LPWSTR pszServer,
319                          [in,ref] LPWSTR pszClient,
320                          [in,ref] LPWSTR pszUser
321                               );
323         /* -- SHARE INFORMATION -- */
325         typedef struct _SHARE_INFO_0 {
326                 LPWSTR  pszName;
327         } SHARE_INFO_0;
329         typedef struct _SHARE_INFO_1 {
330                 LPWSTR  pszName;
331                 DWORD   dwType;
332                 LPWSTR  pszComment;
333         } SHARE_INFO_1;
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;
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;
352         typedef struct _SHARE_ENUM_0 {
353                 DWORD   dwEntries;
354                 [size_is(dwEntries)] SHARE_INFO_0 *si0;
355         } SHARE_ENUM_0;
357         typedef struct _SHARE_ENUM_1 {
358                 DWORD   dwEntries;
359                 [size_is(dwEntries)] SHARE_INFO_1 *si1;
360         } SHARE_ENUM_1;
362         typedef struct _SHARE_ENUM_2 {
363                 DWORD   dwEntries;
364                 [size_is(dwEntries)] SHARE_INFO_2 *si2;
365         } SHARE_ENUM_2;
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;
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                             );
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                                                  );
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                               );
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                               );
406         STATUS NetrShareDel(           /* Function 0x12 */
407                       [in,unique] LPWSTR pszServer,
408                          [in,ref] LPWSTR pszShare,
409                              [in] DWORD  dwReserved
410                             );
412         STATUS NetrShareDelSticky(     /* Function 0x13 */
413                       [in,unique] LPWSTR pszServer,
414                          [in,ref] LPWSTR pszShare,
415                              [in] DWORD  dwReserved
416                                   );
418         STATUS NetrShareCheck(         /* Function 0x14 */
419                       [in,unique] LPWSTR pszServer,
420                          [in,ref] LPWSTR pszDevice,
421                             [out] DWORD* dwType
422                               );
424         /* --- SERVER INFORMATION --- */
426         typedef struct _SERVER_INFO_100 {
427                 DWORD  dwPlatformID;
428                 LPWSTR pszName;
429         } SERVER_INFO_100;
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;
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;
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;
462         STATUS NetrServerGetInfo(      /* Function 0x15 */
463                       [in,unique] LPWSTR       pszServerName,
464                              [in] DWORD        dwLevel,
465                             [out] SERVER_INFO* pServerInfo
466                               );
468         STATUS NetrServerSetInfo(      /* Function 0x16 */
469                       [in,unique] LPWSTR       pszServerName,
470                              [in] DWORD        dwLevel,
471                              [in] SERVER_INFO* pServerInfo,
472                              [in] DWORD        dwReserved
473                               );
475         typedef struct _DISK_INFO {
476                 LPWSTR  pszName;
477         } DISK_INFO;
479         typedef struct _DISK_ENUM {
480                 DWORD   dwEntries;
481                 [size_is(dwEntries)] DISK_INFO *di;
482         } DISK_ENUM;
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                                   );
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;
513         STATUS NetrServerStatisticsGet( /* Function 0x18 */
514                       [in,unique] LPWSTR       pszServer,
515                              [in] DWORD        dwLevel,
516                              [in] DWORD        dwOptions,
517                             [out] STAT_SERVER* pStatServer
518                                        );
520         typedef struct _TRANSPORT_INFO_0 {
521                 LPWSTR  pszName;
522         } TRANSPORT_INFO_0;
524         typedef union _TRANSPORT_INFO switch (DWORD dwLevel) ctr {
525                 case 0: TRANSPORT_INFO_0 *ti0;
526         } TRANSPORT_INFO;
528         typedef struct _TRANSPORT_ENUM_0 {
529                 DWORD   dwEntries;
530                 [size_is(dwEntries)] TRANSPORT_INFO_0 *ti0;
531         } TRANSPORT_ENUM_0;
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;
540         STATUS NetrServerTransportAdd( /* Function 0x19 */
541                       [in,unique] LPWSTR          pszServer,
542                              [in] DWORD           dwLevel,
543                             [out] TRANSPORT_INFO* pTransportInfo
544                                       );
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                                        );
554         STATUS NetrServerTransportDel( /* Function 0x1b */
555                       [in,unique] LPWSTR          pszServer,
556                              [in] DWORD           dwLevel,
557                             [out] TRANSPORT_INFO* pTransportInfo
558                                       );
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;
575         STATUS NetrRemoteTOD(          /* Function 0x1c */
576                       [in,unique] LPWSTR       pszServer,
577                             [out] TIME_OF_DAY* pTOD
578         );
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                                        );
588         /* --- PATH INFORMATION --- */
590         STATUS NetprPathType(          /* Function 0x1e */
591                                   void /* Not known */
592                              );
594         STATUS NetprPathCanonicalize(  /* Function 0x1f */
595                                   void /* Not known */
596                                      );
598         STATUS NetprPathCompare(       /* Function 0x20 */
599                                   void /* Not known */
600                                 );
602         STATUS NetprNameValidate(      /* Function 0x21 */
603                                   void /* Not known */
604                                  );
606         STATUS NetprNameCanonicalize(  /* Function 0x22 */
607                                   void /* Not known */
608                                      );
610         STATUS NetprNameCompare(       /* Function 0x23 */
611                                   void /* Not known */
612                                 );
614         /* --- LATER ADDITIONS --- */
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                                    );
624         STATUS NetrShareDelStart(      /* Function 0x25 */
625                       [in,unique] LPWSTR pszServer,
626                          [in,ref] LPWSTR pszShare,
627                              [in] DWORD  dwReserved /* ? */
628                                  );
630         STATUS NetrShareDelCommit(     /* Function 0x26 */
631                       [in,unique] LPWSTR pszServer
632                                   );
634         STATUS NetrpGetFileSecurity(   /* Function 0x27 */
635                                   void /* Not known */
636                                     );
638         STATUS NetrpSetFileSecurity(   /* Function 0x28 */
639                                   void /* Not known */
640                                     );
642         STATUS NetrServerTransportAddEx( /* Function 0x29 */
643                       [in,unique] LPWSTR          pszServer,
644                              [in] DWORD           dwLevel,
645                             [out] TRANSPORT_INFO* pTransportInfo
646                                         );
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                                           );