1066{
1070 DWORD neededA, returnedA;
1071 DWORD tempneeded, tempreturned, missing;
1072 DWORD servicecountactive, servicecountinactive;
1076
1077
1080 ok(!
ret,
"Expected failure\n");
1082 "Expected ERROR_INVALID_HANDLE, got %ld\n",
GetLastError());
1083
1086 ok(!
ret,
"Expected failure\n");
1088 "Expected ERROR_INVALID_HANDLE, got %ld\n",
GetLastError());
1089
1090
1092
1093
1096 ok(!
ret,
"Expected failure\n");
1100
1103 ok(!
ret,
"Expected failure\n");
1107
1108
1109 returned = 0xdeadbeef;
1112 ok(!
ret,
"Expected failure\n");
1113 ok(returned == 0xdeadbeef,
"Expected no change to the number of services variable\n");
1117
1118 returned = 0xdeadbeef;
1121 ok(!
ret,
"Expected failure\n");
1122 ok(returned == 0xdeadbeef,
"Expected no change to the number of services variable\n");
1126
1127
1128 needed = 0xdeadbeef;
1131 ok(!
ret,
"Expected failure\n");
1132 ok(needed == 0xdeadbeef ||
broken(needed != 0xdeadbeef),
1133 "Expected no change to the needed buffer variable\n");
1137
1138 needed = 0xdeadbeef;
1141 ok(!
ret,
"Expected failure\n");
1142 ok(needed == 0xdeadbeef ||
broken(needed != 0xdeadbeef),
1143 "Expected no change to the needed buffer variable\n");
1147
1148
1149 needed = 0xdeadbeef;
1150 returned = 0xdeadbeef;
1153 ok(!
ret,
"Expected failure\n");
1154 ok(needed == 0 ||
broken(needed != 0),
1155 "Expected needed buffer size to be set to 0, got %ld\n", needed);
1156 ok(returned == 0,
"Expected number of services to be set to 0, got %ld\n", returned);
1158 "Expected ERROR_INVALID_PARAMETER, got %ld\n",
GetLastError());
1159
1160 needed = 0xdeadbeef;
1161 returned = 0xdeadbeef;
1164 ok(!
ret,
"Expected failure\n");
1165 ok(needed == 0 ||
broken(needed != 0),
1166 "Expected needed buffer size to be set to 0, got %ld\n", needed);
1167 ok(returned == 0 ||
broken(returned != 0),
1168 "Expected number of services to be set to 0, got %ld\n", returned);
1170 "Expected ERROR_INVALID_PARAMETER, got %ld\n",
GetLastError());
1171
1172
1173 needed = 0xdeadbeef;
1174 returned = 0xdeadbeef;
1177 ok(!
ret,
"Expected failure\n");
1178 ok(needed == 0 ||
broken(needed != 0),
1179 "Expected needed buffer size to be set to 0, got %ld\n", needed);
1180 ok(returned == 0,
"Expected number of services to be set to 0, got %ld\n", returned);
1182 "Expected ERROR_INVALID_PARAMETER, got %ld\n",
GetLastError());
1183
1184 needed = 0xdeadbeef;
1185 returned = 0xdeadbeef;
1188 ok(!
ret,
"Expected failure\n");
1189 ok(needed == 0 ||
broken(needed != 0),
1190 "Expected needed buffer size to be set to 0, got %ld\n", needed);
1191 ok(returned == 0 ||
broken(returned != 0),
1192 "Expected number of services to be set to 0, got %ld\n", returned);
1194 "Expected ERROR_INVALID_PARAMETER, got %ld\n",
GetLastError());
1195
1196
1197 needed = 0xdeadbeef;
1198 returned = 0xdeadbeef;
1201 ok(!
ret,
"Expected failure\n");
1202 ok(needed == 0 ||
broken(needed != 0),
1203 "Expected needed buffer size to be set to 0, got %ld\n", needed);
1204 ok(returned == 0,
"Expected number of services to be set to 0, got %ld\n", returned);
1206 "Expected ERROR_INVALID_PARAMETER, got %ld\n",
GetLastError());
1207
1208 needed = 0xdeadbeef;
1209 returned = 0xdeadbeef;
1212 ok(!
ret,
"Expected failure\n");
1213 ok(needed == 0 ||
broken(needed != 0),
1214 "Expected needed buffer size to be set to 0, got %ld\n", needed);
1215 ok(returned == 0 ||
broken(returned != 0),
1216 "Expected number of services to be set to 0, got %ld\n", returned);
1218 "Expected ERROR_INVALID_PARAMETER, got %ld\n",
GetLastError());
1219
1220
1221 needed = 0xdeadbeef;
1222 returned = 0xdeadbeef;
1225 ok(!
ret,
"Expected failure\n");
1226 ok(needed == 0 ||
broken(needed != 0),
1227 "Expected needed buffer size to be set to 0, got %ld\n", needed);
1228 ok(returned == 0,
"Expected number of services to be set to 0, got %ld\n", returned);
1230 "Expected ERROR_ACCESS_DENIED, got %ld\n",
GetLastError());
1231
1232 needed = 0xdeadbeef;
1233 returned = 0xdeadbeef;
1236 ok(!
ret,
"Expected failure\n");
1237 ok(needed == 0 ||
broken(needed != 0),
1238 "Expected needed buffer size to be set to 0, got %ld\n", needed);
1239 ok(returned == 0 ||
broken(returned != 0),
1240 "Expected number of services to be set to 0, got %ld\n", returned);
1242 "Expected ERROR_ACCESS_DENIED, got %ld\n",
GetLastError());
1243
1244
1247
1248
1249 needed = 0xdeadbeef;
1250 returned = 0xdeadbeef;
1253 ok(!
ret,
"Expected failure\n");
1254 ok(needed != 0xdeadbeef && needed > 0,
"Expected the needed buffer size for this one service\n");
1255 ok(returned == 0,
"Expected no service returned, got %ld\n", returned);
1257 "Expected ERROR_MORE_DATA, got %ld\n",
GetLastError());
1258
1259
1260 neededA = 0xdeadbeef;
1261 returnedA = 0xdeadbeef;
1264 ok(!
ret,
"Expected failure\n");
1266 "Expected ERROR_MORE_DATA, got %ld\n",
GetLastError());
1267 ok(neededA != 0xdeadbeef && neededA > 0,
"Expected the needed buffer size for this one service\n");
1268 ok(returnedA == 0,
"Expected no service returned, got %ld\n", returnedA);
1269 if (neededA != needed && attempt)
1270 goto retry;
1271 ok(neededA == needed,
"Expected needed buffersize to be the same for A- and W-calls\n");
1272
1273
1274 tempneeded = needed;
1275
1276
1279 needed = 0xdeadbeef;
1280 returned = 0xdeadbeef;
1286 goto retry;
1288 ok(needed == 0,
"Expected needed buffer to be 0 as we are done\n");
1289 ok(returned != 0xdeadbeef && returned > 0,
"Expected some returned services\n");
1290
1291
1292 tempreturned = returned;
1293
1294 servicesA =
malloc(neededA);
1296 neededA = 0xdeadbeef;
1297 returnedA = 0xdeadbeef;
1303 goto retry;
1305 win_skip(
"Skipping some tests due to EnumServicesStatusA()'s broken UTF-8 support\n");
1306 else
1307 {
1309 ok(neededA == 0,
"Expected needed buffer to be 0 as we are done\n");
1310 ok(returnedA != 0xdeadbeef && returnedA > 0,
"Expected some returned services\n");
1311 }
1312
1313
1314
1315
1316
1319 needed = 0xdeadbeef;
1320 returned = 0xdeadbeef;
1324 if (
ret && needed == 0 && attempt)
1325 {
1327 goto retry;
1328 }
1329 ok(!
ret,
"Expected failure\n");
1330 ok(needed != 0xdeadbeef && needed > 0,
"Expected the needed buffer size\n");
1331 todo_wine ok(needed < tempneeded,
"Expected a smaller needed buffer size for the missing services\n");
1332
1333
1334
1335 ok(returned < tempreturned,
"Expected fewer services to be returned\n");
1337 "Expected ERROR_MORE_DATA, got %ld\n",
GetLastError());
1338
1339
1341 needed = 0xdeadbeef;
1342 returned = 0xdeadbeef;
1343 resume = 0;
1347 if (
ret && needed == 0 && attempt)
1348 {
1350 goto retry;
1351 }
1352 ok(!
ret,
"Expected failure\n");
1353 ok(needed != 0xdeadbeef && needed > 0,
"Expected the needed buffer size for the missing services, got %lx\n", needed);
1354 todo_wine ok(needed < tempneeded,
"Expected < %lu bytes needed for the remaining services, got %lu\n", tempneeded, needed);
1355 ok(returned < tempreturned,
"Expected < %lu remaining services, got %lu\n", tempreturned, returned);
1356 todo_wine ok(resume,
"Expected a resume handle\n");
1358 "Expected ERROR_MORE_DATA, got %ld\n",
GetLastError());
1359
1360
1361 missing = tempreturned - returned;
1363 needed = 0xdeadbeef;
1364 returned = 0xdeadbeef;
1370 goto retry;
1372 ok(needed == 0,
"Expected 0 needed bytes as we are done, got %lu\n", needed);
1374 goto retry;
1375 todo_wine ok(returned == missing,
"Expected %lu remaining services, got %lu\n", missing, returned);
1376 ok(resume == 0,
"Expected the resume handle to be 0\n");
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1392 &needed, &returned,
NULL);
1398 goto retry;
1399
1400 servicecountactive = returned;
1401
1402
1404 &needed, &returned,
NULL);
1410 goto retry;
1411
1412 servicecountinactive = returned;
1413
1414
1416 &needed, &returned,
NULL);
1422 goto retry;
1423
1424
1425 if (returned != servicecountactive + servicecountinactive && attempt)
1426 goto retry;
1427 ok(returned == servicecountactive + servicecountinactive,
1428 "Expected service count %ld == %ld + %ld\n",
1429 returned, servicecountactive, servicecountinactive);
1430
1431
1432
1433
1434
1435
1437 NULL, 0, &needed, &returned,
NULL);
1442 goto retry;
1444
1445
1446 for (
i = 0;
ret &&
i < returned;
i++)
1447 {
1449
1450
1451 ok(
services[
i].lpServiceName[0],
"Expected a service name\n");
1453
1454
1455
1456
1458 {
1459 switch (
status.dwCurrentState)
1460 {
1466 trace(
"Got state %lx for service %s\n",
status.dwCurrentState,
1468
1469
1471 servicecountactive--;
1472 break;
1473
1475 servicecountinactive--;
1476 break;
1477
1478 default:
1479 ok(0,
"Got unknown state %lx for service %s\n",
1481 break;
1482 }
1483 }
1484 }
1486
1487 if ((servicecountactive || servicecountinactive) && attempt)
1488 goto retry;
1489 ok(servicecountactive == 0,
"Active services mismatch %lu\n", servicecountactive);
1490 ok(servicecountinactive == 0,
"Inactive services mismatch %lu\n", servicecountinactive);
1491
1493
1494retry:
1496 return alldone;
1497}
#define ERROR_NOT_ENOUGH_MEMORY
GLenum GLuint GLsizei bufsize
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
const char * winetest_platform
#define SERVICE_STATE_ALL
#define SC_MANAGER_ENUMERATE_SERVICE
#define SERVICE_STOP_PENDING
#define SERVICE_START_PENDING
#define SERVICE_PAUSE_PENDING
#define SERVICE_CONTINUE_PENDING
BOOL WINAPI EnumServicesStatusA(SC_HANDLE hSCManager, DWORD dwServiceType, DWORD dwServiceState, LPENUM_SERVICE_STATUSA lpServices, DWORD cbBufSize, LPDWORD pcbBytesNeeded, LPDWORD lpServicesReturned, LPDWORD lpResumeHandle)
BOOL WINAPI EnumServicesStatusW(SC_HANDLE hSCManager, DWORD dwServiceType, DWORD dwServiceState, LPENUM_SERVICE_STATUSW lpServices, DWORD cbBufSize, LPDWORD pcbBytesNeeded, LPDWORD lpServicesReturned, LPDWORD lpResumeHandle)
_In_ LPCSTR _Out_writes_to_opt_ cchDisplayName LPSTR lpDisplayName