Reactos

[SERVICES_WINETEST] Sync with Wine Staging 4.0. CORE-15682

+49 -1
+49 -1
modules/rostests/winetests/services/service.c
··· 35 35 /* Service process global variables */ 36 36 static HANDLE service_stop_event; 37 37 38 + static int monitor_count; 39 + 38 40 static void send_msg(const char *type, const char *msg) 39 41 { 40 42 DWORD written = 0; ··· 127 129 service_ok(r, "DestroyWindow failed: %08x\n", GetLastError()); 128 130 } 129 131 132 + static BOOL CALLBACK monitor_enum_proc(HMONITOR hmon, HDC hdc, LPRECT lprc, LPARAM lparam) 133 + { 134 + BOOL r; 135 + MONITORINFOEXA mi; 136 + 137 + service_ok(hmon != NULL, "Unexpected hmon=%#x\n", hmon); 138 + 139 + monitor_count++; 140 + 141 + mi.cbSize = sizeof(mi); 142 + 143 + SetLastError(0xdeadbeef); 144 + r = GetMonitorInfoA(NULL, (MONITORINFO*)&mi); 145 + service_ok(GetLastError() == ERROR_INVALID_MONITOR_HANDLE, "Unexpected GetLastError: %#x.\n", GetLastError()); 146 + service_ok(!r, "GetMonitorInfo with NULL HMONITOR succeeded.\n"); 147 + 148 + r = GetMonitorInfoA(hmon, (MONITORINFO*)&mi); 149 + service_ok(r, "GetMonitorInfo failed.\n"); 150 + 151 + service_ok(mi.rcMonitor.left == 0 && mi.rcMonitor.top == 0 && mi.rcMonitor.right >= 640 && mi.rcMonitor.bottom >= 480, 152 + "Unexpected monitor rcMonitor values: {%d,%d,%d,%d}\n", 153 + mi.rcMonitor.left, mi.rcMonitor.top, mi.rcMonitor.right, mi.rcMonitor.bottom); 154 + 155 + service_ok(mi.rcWork.left == 0 && mi.rcWork.top == 0 && mi.rcWork.right >= 640 && mi.rcWork.bottom >= 480, 156 + "Unexpected monitor rcWork values: {%d,%d,%d,%d}\n", 157 + mi.rcWork.left, mi.rcWork.top, mi.rcWork.right, mi.rcWork.bottom); 158 + 159 + service_ok(!strcmp(mi.szDevice, "WinDisc") || !strcmp(mi.szDevice, "\\\\.\\DISPLAY1"), 160 + "Unexpected szDevice received: %s\n", mi.szDevice); 161 + 162 + service_ok(mi.dwFlags == MONITORINFOF_PRIMARY, "Unexpected secondary monitor info.\n"); 163 + 164 + return TRUE; 165 + } 166 + 167 + /* query monitor information, even in non-interactive services */ 168 + static void test_monitors(void) 169 + { 170 + BOOL r; 171 + 172 + r = EnumDisplayMonitors(0, 0, monitor_enum_proc, 0); 173 + service_ok(r, "EnumDisplayMonitors failed.\n"); 174 + service_ok(monitor_count == 1, "Callback got called less or more than once. %d\n", monitor_count); 175 + } 176 + 130 177 static DWORD WINAPI service_handler(DWORD ctrl, DWORD event_type, void *event_data, void *context) 131 178 { 132 179 SERVICE_STATUS status; ··· 151 198 case 128: 152 199 test_winstation(); 153 200 test_create_window(); 201 + test_monitors(); 154 202 service_event("CUSTOM"); 155 203 return 0xdeadbeef; 156 204 default: ··· 541 589 sprintf(named_pipe_name, "\\\\.\\pipe\\%s_pipe", service_name); 542 590 543 591 pipe_handle = CreateNamedPipeA(named_pipe_name, PIPE_ACCESS_INBOUND, 544 - PIPE_TYPE_BYTE|PIPE_READMODE_BYTE|PIPE_WAIT, 10, 2048, 2048, 10000, NULL); 592 + PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT, 10, 2048, 2048, 10000, NULL); 545 593 ok(pipe_handle != INVALID_HANDLE_VALUE, "CreateNamedPipe failed: %u\n", GetLastError()); 546 594 if(pipe_handle == INVALID_HANDLE_VALUE) 547 595 return;