[IDL][NETAPI32][SRVSVC] Hack around another midl/rpcrt4 bug

NETAPI32: Get rid of the old WINE NetServerGetInfo and replace it by a proper call to NetrServerGetInfo.
SRVSVC: Implement parts of NetrServerGetInfo.
srvsvc.idl: Hack around a bug in midl or rpcrt4. They are not able to handle a pointer to a union of pointers to structs. A pointer to a union of structs works a advertised.
This commit is contained in:
Eric Kohl 2018-05-06 16:49:24 +02:00
parent 93edd2a185
commit 12bdbe5710
4 changed files with 143 additions and 70 deletions

View file

@ -734,6 +734,7 @@ typedef struct _SERVER_INFO_1556
} SERVER_INFO_1556, *PSERVER_INFO_1556, *LPSERVER_INFO_1556;
cpp_quote("#endif")
/*
typedef [switch_type(unsigned long)] union _SERVER_INFO
{
[case(100)] LPSERVER_INFO_100 ServerInfo100;
@ -788,6 +789,61 @@ typedef [switch_type(unsigned long)] union _SERVER_INFO
[case(1555)] LPSERVER_INFO_1555 ServerInfo1555;
[case(1556)] LPSERVER_INFO_1556 ServerInfo1556;
} SERVER_INFO, *PSERVER_INFO, *LPSERVER_INFO;
*/
typedef [switch_type(unsigned long)] union _SERVER_INFO
{
[case(100)] SERVER_INFO_100 ServerInfo100;
[case(101)] SERVER_INFO_101 ServerInfo101;
[case(102)] SERVER_INFO_102 ServerInfo102;
[case(103)] SERVER_INFO_103 ServerInfo103;
[case(502)] SERVER_INFO_502 ServerInfo502;
[case(503)] SERVER_INFO_503 ServerInfo503;
[case(599)] SERVER_INFO_599 ServerInfo599;
[case(1005)] SERVER_INFO_1005 ServerInfo1005;
[case(1107)] SERVER_INFO_1107 ServerInfo1107;
[case(1010)] SERVER_INFO_1010 ServerInfo1010;
[case(1016)] SERVER_INFO_1016 ServerInfo1016;
[case(1017)] SERVER_INFO_1017 ServerInfo1017;
[case(1018)] SERVER_INFO_1018 ServerInfo1018;
[case(1501)] SERVER_INFO_1501 ServerInfo1501;
[case(1502)] SERVER_INFO_1502 ServerInfo1502;
[case(1503)] SERVER_INFO_1503 ServerInfo1503;
[case(1506)] SERVER_INFO_1506 ServerInfo1506;
[case(1510)] SERVER_INFO_1510 ServerInfo1510;
[case(1511)] SERVER_INFO_1511 ServerInfo1511;
[case(1512)] SERVER_INFO_1512 ServerInfo1512;
[case(1513)] SERVER_INFO_1513 ServerInfo1513;
[case(1514)] SERVER_INFO_1514 ServerInfo1514;
[case(1515)] SERVER_INFO_1515 ServerInfo1515;
[case(1516)] SERVER_INFO_1516 ServerInfo1516;
[case(1518)] SERVER_INFO_1518 ServerInfo1518;
[case(1523)] SERVER_INFO_1523 ServerInfo1523;
[case(1528)] SERVER_INFO_1528 ServerInfo1528;
[case(1529)] SERVER_INFO_1529 ServerInfo1529;
[case(1530)] SERVER_INFO_1530 ServerInfo1530;
[case(1533)] SERVER_INFO_1533 ServerInfo1533;
[case(1534)] SERVER_INFO_1534 ServerInfo1534;
[case(1535)] SERVER_INFO_1535 ServerInfo1535;
[case(1536)] SERVER_INFO_1536 ServerInfo1536;
[case(1538)] SERVER_INFO_1538 ServerInfo1538;
[case(1539)] SERVER_INFO_1539 ServerInfo1539;
[case(1540)] SERVER_INFO_1540 ServerInfo1540;
[case(1541)] SERVER_INFO_1541 ServerInfo1541;
[case(1542)] SERVER_INFO_1542 ServerInfo1542;
[case(1543)] SERVER_INFO_1543 ServerInfo1543;
[case(1544)] SERVER_INFO_1544 ServerInfo1544;
[case(1545)] SERVER_INFO_1545 ServerInfo1545;
[case(1546)] SERVER_INFO_1546 ServerInfo1546;
[case(1547)] SERVER_INFO_1547 ServerInfo1547;
[case(1548)] SERVER_INFO_1548 ServerInfo1548;
[case(1549)] SERVER_INFO_1549 ServerInfo1549;
[case(1550)] SERVER_INFO_1550 ServerInfo1550;
[case(1552)] SERVER_INFO_1552 ServerInfo1552;
[case(1553)] SERVER_INFO_1553 ServerInfo1553;
[case(1554)] SERVER_INFO_1554 ServerInfo1554;
[case(1555)] SERVER_INFO_1555 ServerInfo1555;
[case(1556)] SERVER_INFO_1556 ServerInfo1556;
} SERVER_INFO, *PSERVER_INFO, *LPSERVER_INFO;
typedef struct _DISK_INFO
{
@ -1162,7 +1218,8 @@ interface srvsvc
NetrServerGetInfo(
[in, string, unique] SRVSVC_HANDLE ServerName,
[in] DWORD Level,
[out, switch_is(Level)] LPSERVER_INFO InfoStruct);
[out, switch_is(Level)] LPSERVER_INFO *InfoStruct);
// [out, switch_is(Level)] LPSERVER_INFO InfoStruct);
NET_API_STATUS
__stdcall