33
33
#include "perl.h"
34
34
#include "XSUB.h"
35
35
36
+ #ifndef A2WHELPER
37
+ # define A2WHELPER_LEN (lpa , alen , lpw , nBytes )\
38
+ (lpw[0] = 0, MultiByteToWideChar((IN_BYTES) ? CP_ACP : CP_UTF8, 0, \
39
+ lpa, alen, lpw, (nBytes/sizeof(WCHAR))))
40
+ # define A2WHELPER (lpa , lpw , nBytes ) A2WHELPER_LEN(lpa, -1, lpw, nBytes)
41
+
42
+ # define W2AHELPER_LEN (lpw , wlen , lpa , nChars )\
43
+ (lpa[0] = '\0', WideCharToMultiByte((IN_BYTES) ? CP_ACP : CP_UTF8, 0, \
44
+ lpw, wlen, (LPSTR)lpa, nChars,NULL,NULL))
45
+ # define W2AHELPER (lpw , lpa , nChars ) W2AHELPER_LEN(lpw, -1, lpa, nChars)
46
+ #endif
47
+
36
48
#include "../ppport.h"
37
49
38
50
#define RETURNRESULT (x ) if ((x)){ XST_mYES(0); }\
@@ -556,7 +568,7 @@ _AllocWideName(char* name)
556
568
length = (strlen (name )+ 1 ) * sizeof (WCHAR );
557
569
lpPtr = (LPWSTR )malloc (length );
558
570
if (lpPtr != NULL )
559
- MultiByteToWideChar (CP_ACP , NULL , name , -1 , lpPtr , length );
571
+ MultiByteToWideChar (CP_ACP , 0 , name , -1 , lpPtr , length );
560
572
}
561
573
return lpPtr ;
562
574
}
574
586
WCTMB (LPWSTR lpwStr , LPSTR lpStr , int size )
575
587
{
576
588
* lpStr = '\0' ;
577
- return WideCharToMultiByte (CP_ACP ,NULL , lpwStr ,-1 ,lpStr ,size ,NULL ,NULL );
589
+ return WideCharToMultiByte (CP_ACP , 0 , lpwStr , -1 , lpStr , size , NULL , 0 );
578
590
}
579
591
580
592
/*
@@ -902,7 +914,6 @@ XS(XS_NT__NetAdmin_UserChangePassword)
902
914
XS (XS_NT__NetAdmin_UsersExist )
903
915
{
904
916
dXSARGS ;
905
- char buffer [UNLEN + 1 ];
906
917
LPWSTR lpwServer , lpwUser ;
907
918
PUSER_INFO_0 puiUser ;
908
919
BOOL bReturn = FALSE;
@@ -936,9 +947,8 @@ XS(XS_NT__NetAdmin_GetUsers)
936
947
PUSER_INFO_0 pwzUsers ;
937
948
PUSER_INFO_10 pwzUsers10 ;
938
949
DWORD filter , entriesRead , totalEntries , resumeHandle = 0 ;
939
- int index ;
940
- SV * sv , * nSv ;
941
- SV * user ;
950
+ DWORD index ;
951
+ SV * sv ;
942
952
DWORD lastError = 0 ;
943
953
944
954
if (items != 3 ) {
@@ -1007,7 +1017,7 @@ XS(XS_NT__NetAdmin_GetTransports)
1007
1017
char buffer1 [UNLEN + 1 ];
1008
1018
PWKSTA_TRANSPORT_INFO_0 pws ;
1009
1019
DWORD entriesRead , totalEntries , resumeHandle = 0 ;
1010
- int index ;
1020
+ DWORD index ;
1011
1021
SV * sv ;
1012
1022
HV * hvTemp ;
1013
1023
DWORD lastError = 0 ;
@@ -1100,9 +1110,8 @@ XS(XS_NT__NetAdmin_LoggedOnUsers)
1100
1110
PWKSTA_USER_INFO_0 pwzUser0 ;
1101
1111
PWKSTA_USER_INFO_1 pwzUser1 ;
1102
1112
DWORD entriesRead , totalEntries , resumeHandle = 0 ;
1103
- int index ;
1104
- SV * sv , * nSv ;
1105
- SV * user ;
1113
+ DWORD index ;
1114
+ SV * sv ;
1106
1115
DWORD lastError = 0 ;
1107
1116
1108
1117
if (items != 2 ) {
@@ -1295,7 +1304,7 @@ XS(XS_NT__NetAdmin_GroupAddUsers)
1295
1304
for (index = 0 ; index <= count ; ++ index ) {
1296
1305
psv = av_fetch ((AV * )sv , index , 0 );
1297
1306
if (psv != NULL ) {
1298
- MultiByteToWideChar (CP_ACP , NULL , (char * )SvPV (* psv ,n_a ),
1307
+ MultiByteToWideChar (CP_ACP , 0 , (char * )SvPV (* psv ,n_a ),
1299
1308
-1 , wzUser , sizeof (wzUser ));
1300
1309
lastError = NetGroupAddUser (lpwServer , lpwGroup , wzUser );
1301
1310
if (lastError != 0 )
@@ -1304,7 +1313,7 @@ XS(XS_NT__NetAdmin_GroupAddUsers)
1304
1313
}
1305
1314
break ;
1306
1315
default :
1307
- MultiByteToWideChar (CP_ACP , NULL , (char * )SvPV (sv ,n_a ),
1316
+ MultiByteToWideChar (CP_ACP , 0 , (char * )SvPV (sv ,n_a ),
1308
1317
-1 , wzUser , sizeof (wzUser ));
1309
1318
lastError = NetGroupAddUser (lpwServer , lpwGroup , wzUser );
1310
1319
break ;
@@ -1342,7 +1351,7 @@ XS(XS_NT__NetAdmin_GroupDeleteUsers)
1342
1351
for (index = 0 ; index <= count ; ++ index ) {
1343
1352
psv = av_fetch ((AV * )sv , index , 0 );
1344
1353
if (psv != NULL ) {
1345
- MultiByteToWideChar (CP_ACP , NULL , (char * )SvPV (* psv ,n_a ),
1354
+ MultiByteToWideChar (CP_ACP , 0 , (char * )SvPV (* psv ,n_a ),
1346
1355
-1 , wzUser , sizeof (wzUser ));
1347
1356
lastError = NetGroupDelUser (lpwServer , lpwGroup , wzUser );
1348
1357
if (lastError != 0 )
@@ -1351,7 +1360,7 @@ XS(XS_NT__NetAdmin_GroupDeleteUsers)
1351
1360
}
1352
1361
break ;
1353
1362
default :
1354
- MultiByteToWideChar (CP_ACP , NULL , (char * )SvPV (sv ,n_a ),
1363
+ MultiByteToWideChar (CP_ACP , 0 , (char * )SvPV (sv ,n_a ),
1355
1364
-1 , wzUser , sizeof (wzUser ));
1356
1365
lastError = NetGroupDelUser (lpwServer , lpwGroup , wzUser );
1357
1366
break ;
@@ -1369,7 +1378,7 @@ XS(XS_NT__NetAdmin_GroupIsMember)
1369
1378
LPWSTR lpwServer , lpwGroup , lpwUser ;
1370
1379
PGROUP_USERS_INFO_0 pwzGroupUsers ;
1371
1380
DWORD entriesRead , totalEntries , resumeHandle = 0 ;
1372
- int index ;
1381
+ DWORD index ;
1373
1382
BOOL bReturn = FALSE;
1374
1383
DWORD lastError = 0 ;
1375
1384
@@ -1429,9 +1438,9 @@ XS(XS_NT__NetAdmin_GroupGetMembers)
1429
1438
char buffer [UNLEN + 1 ];
1430
1439
PGROUP_USERS_INFO_0 pwzGroupUsers ;
1431
1440
DWORD entriesRead , totalEntries ;
1432
- size_t resumeHandle = 0 ;
1433
- int index ;
1434
- SV * sv , * nSv ;
1441
+ DWORD resumeHandle = 0 ;
1442
+ DWORD index ;
1443
+ SV * sv ;
1435
1444
DWORD lastError = 0 ;
1436
1445
1437
1446
if (items != 3 ) {
@@ -1598,7 +1607,7 @@ XS(XS_NT__NetAdmin_LocalGroupAddUsers)
1598
1607
for (index = 0 ; index <= count ; ++ index ) {
1599
1608
psv = av_fetch ((AV * )sv , index , 0 );
1600
1609
if (psv != NULL ) {
1601
- MultiByteToWideChar (CP_ACP , NULL , (char * )SvPV (* psv ,n_a ),
1610
+ MultiByteToWideChar (CP_ACP , 0 , (char * )SvPV (* psv ,n_a ),
1602
1611
-1 , wzUser , sizeof (wzUser ));
1603
1612
lastError = NetLocalGroupAddMembers (lpwServer , lpwGroup , 3 ,
1604
1613
(LPBYTE )& lgmi3MembersInfo , 1 );
@@ -1608,7 +1617,7 @@ XS(XS_NT__NetAdmin_LocalGroupAddUsers)
1608
1617
}
1609
1618
break ;
1610
1619
default :
1611
- MultiByteToWideChar (CP_ACP , NULL , (char * )SvPV (sv ,n_a ), -1 ,
1620
+ MultiByteToWideChar (CP_ACP , 0 , (char * )SvPV (sv ,n_a ), -1 ,
1612
1621
wzUser , sizeof (wzUser ));
1613
1622
lastError = NetLocalGroupAddMembers (lpwServer , lpwGroup , 3 ,
1614
1623
(LPBYTE )& lgmi3MembersInfo , 1 );
@@ -1649,7 +1658,7 @@ XS(XS_NT__NetAdmin_LocalGroupDeleteUsers)
1649
1658
for (index = 0 ; index <= count ; ++ index ) {
1650
1659
psv = av_fetch ((AV * )sv , index , 0 );
1651
1660
if (psv != NULL ) {
1652
- MultiByteToWideChar (CP_ACP , NULL , (char * )SvPV (* psv ,n_a ),
1661
+ MultiByteToWideChar (CP_ACP , 0 , (char * )SvPV (* psv ,n_a ),
1653
1662
-1 , wzUser , sizeof (wzUser ));
1654
1663
lastError = NetLocalGroupDelMembers (lpwServer , lpwGroup , 3 ,
1655
1664
(LPBYTE )& lgmi3MembersInfo , 1 );
@@ -1659,7 +1668,7 @@ XS(XS_NT__NetAdmin_LocalGroupDeleteUsers)
1659
1668
}
1660
1669
break ;
1661
1670
default :
1662
- MultiByteToWideChar (CP_ACP , NULL , (char * )SvPV (sv ,n_a ), -1 ,
1671
+ MultiByteToWideChar (CP_ACP , 0 , (char * )SvPV (sv ,n_a ), -1 ,
1663
1672
wzUser , sizeof (wzUser ));
1664
1673
lastError = NetLocalGroupDelMembers (lpwServer , lpwGroup , 3 ,
1665
1674
(LPBYTE )& lgmi3MembersInfo , 1 );
@@ -1675,10 +1684,10 @@ XS(XS_NT__NetAdmin_LocalGroupDeleteUsers)
1675
1684
XS (XS_NT__NetAdmin_LocalGroupIsMember )
1676
1685
{
1677
1686
dXSARGS ;
1678
- LPWSTR lpwServer , lpwGroup , lpwUser ;
1687
+ LPWSTR lpwServer , lpwGroup ;
1679
1688
DWORD entriesRead , totalEntries ;
1680
- size_t resumeHandle = 0 ;
1681
- int index ;
1689
+ DWORD resumeHandle = 0 ;
1690
+ DWORD index ;
1682
1691
BOOL bReturn = FALSE;
1683
1692
DWORD lastError = 0 ;
1684
1693
@@ -1689,22 +1698,12 @@ XS(XS_NT__NetAdmin_LocalGroupIsMember)
1689
1698
STRLEN n_a ;
1690
1699
#if 1
1691
1700
PSID pSid ;
1692
- if (USING_WIDE ()) {
1693
- WCHAR wSystemName [MAX_PATH + 1 ];
1694
- WCHAR wAccountName [MAX_PATH + 1 ];
1695
- A2WHELPER ((LPCTSTR )SvPV (ST (0 ),n_a ), wSystemName , sizeof (wSystemName ));
1696
- A2WHELPER ((LPCTSTR )SvPV (ST (2 ),n_a ), wAccountName , sizeof (wAccountName ));
1697
- lastError = GetAccountSIDW (wSystemName ,
1698
- wAccountName ,
1699
- & pSid );
1700
- }
1701
- else
1702
- lastError = GetAccountSIDA ((LPCTSTR )SvPV (ST (0 ),n_a ),
1703
- (LPCTSTR )SvPV (ST (2 ),n_a ),
1704
- & pSid );
1701
+ lastError = GetAccountSIDA ((LPCTSTR )SvPV (ST (0 ),n_a ),
1702
+ (LPCTSTR )SvPV (ST (2 ),n_a ),
1703
+ & pSid );
1705
1704
if (ERROR_SUCCESS != lastError )
1706
1705
XSRETURN_NO ;
1707
-
1706
+
1708
1707
AllocWideName ((char * )SvPV (ST (0 ),n_a ), lpwServer );
1709
1708
AllocWideName ((char * )SvPV (ST (1 ),n_a ), lpwGroup );
1710
1709
do {
@@ -1767,9 +1766,9 @@ XS(XS_NT__NetAdmin_LocalGroupGetMembers)
1767
1766
char buffer [UNLEN + 1 ];
1768
1767
PLOCALGROUP_MEMBERS_INFO_1 pwzMembersInfo ;
1769
1768
DWORD entriesRead , totalEntries ;
1770
- size_t resumeHandle = 0 ;
1771
- int index ;
1772
- SV * sv , * nSv ;
1769
+ DWORD resumeHandle = 0 ;
1770
+ DWORD index ;
1771
+ SV * sv ;
1773
1772
DWORD lastError = 0 ;
1774
1773
1775
1774
if (items != 3 ) {
@@ -1821,9 +1820,9 @@ XS(XS_NT__NetAdmin_LocalGroupGetMembersWithDomain)
1821
1820
char buffer1 [UNLEN + 1 ];
1822
1821
PLOCALGROUP_MEMBERS_INFO_2 pwzMembersInfo ;
1823
1822
DWORD entriesRead , totalEntries ;
1824
- size_t resumeHandle = 0 ;
1825
- int index ;
1826
- SV * sv , * nSv ;
1823
+ DWORD resumeHandle = 0 ;
1824
+ DWORD index ;
1825
+ SV * sv ;
1827
1826
DWORD lastError = 0 ;
1828
1827
1829
1828
if (items != 3 ) {
@@ -1899,8 +1898,8 @@ XS(XS_NT__NetAdmin_GetServers)
1899
1898
PSERVER_INFO_100 pwzServerInfo ;
1900
1899
PSERVER_INFO_101 pwzServerInfo101 ;
1901
1900
DWORD entriesRead , totalEntries , resumeHandle = 0 ;
1902
- int index ;
1903
- SV * sv , * nSv ;
1901
+ DWORD index ;
1902
+ SV * sv ;
1904
1903
DWORD lastError = 0 ;
1905
1904
1906
1905
if (items != 4 ) {
@@ -1977,8 +1976,8 @@ XS(XS_NT__NetAdmin_GetServerDisks)
1977
1976
LPWSTR disks ;
1978
1977
LPWSTR p ;
1979
1978
DWORD entriesRead , totalEntries , resumeHandle = 0 ;
1980
- int index ;
1981
- SV * sv , * nSv ;
1979
+ DWORD index ;
1980
+ SV * sv ;
1982
1981
DWORD lastError = 0 ;
1983
1982
1984
1983
if (items != 2 ) {
0 commit comments