9 TEST_NtUserEnumDisplaySettings(PTESTINFO pti
)
11 UNICODE_STRING usDeviceName
;
12 WCHAR szName
[] = L
"DISPLAY";
16 SetLastError(ERROR_SUCCESS
);
17 Status
= NtUserEnumDisplaySettings(NULL
, 0, 0, 0);
18 TEST(Status
== STATUS_ACCESS_VIOLATION
);
19 TEST(GetLastError() == ERROR_SUCCESS
);
21 data
.devmode
.dmDriverExtra
= 0;
22 for (i
= 0; i
< 2 * sizeof(DEVMODEW
); i
++)
24 data
.devmode
.dmSize
= i
;
25 Status
= NtUserEnumDisplaySettings(NULL
, 1000, (DEVMODEW
*)&data
, 0);
26 if (i
!= sizeof(DEVMODEW
))
28 TEST(Status
== STATUS_BUFFER_TOO_SMALL
);
31 TEST(GetLastError() == ERROR_SUCCESS
);
33 usDeviceName
.Buffer
= NULL
;
34 usDeviceName
.Length
= 0;
35 usDeviceName
.MaximumLength
= 0;
36 Status
= NtUserEnumDisplaySettings(&usDeviceName
, ENUM_CURRENT_SETTINGS
, (DEVMODEW
*)&data
, 0);
37 TEST(Status
== STATUS_BUFFER_TOO_SMALL
);
38 Status
= NtUserEnumDisplaySettings(&usDeviceName
, -4, (DEVMODEW
*)&data
, 0);
39 TEST(Status
== STATUS_BUFFER_TOO_SMALL
);
41 data
.devmode
.dmSize
= sizeof(DEVMODEW
);
42 data
.devmode
.dmDriverExtra
= 0xffff;
43 Status
= NtUserEnumDisplaySettings(NULL
, ENUM_CURRENT_SETTINGS
, (DEVMODEW
*)&data
, 0);
44 TEST(Status
== STATUS_SUCCESS
);
46 data
.devmode
.dmSize
= sizeof(DEVMODEW
);
47 data
.devmode
.dmDriverExtra
= 0;
48 Status
= NtUserEnumDisplaySettings(NULL
, ENUM_CURRENT_SETTINGS
, (DEVMODEW
*)&data
, 0);
49 TEST(Status
== STATUS_SUCCESS
);
51 usDeviceName
.Buffer
= NULL
;
52 usDeviceName
.Length
= 0;
53 usDeviceName
.MaximumLength
= 0;
54 Status
= NtUserEnumDisplaySettings(&usDeviceName
, ENUM_CURRENT_SETTINGS
, (DEVMODEW
*)&data
, 0);
55 TEST(Status
== STATUS_INVALID_PARAMETER_1
);
56 Status
= NtUserEnumDisplaySettings(&usDeviceName
, -4, (DEVMODEW
*)&data
, 0);
57 TEST(Status
== STATUS_INVALID_PARAMETER_1
);
59 Status
= NtUserEnumDisplaySettings(NULL
, 0, (DEVMODEW
*)&data
, 0);
60 TEST(Status
== STATUS_SUCCESS
);
61 Status
= NtUserEnumDisplaySettings(NULL
, 1, (DEVMODEW
*)&data
, 0);
62 TEST(Status
== STATUS_SUCCESS
);
63 Status
= NtUserEnumDisplaySettings(NULL
, 2, (DEVMODEW
*)&data
, 0);
64 TEST(Status
== STATUS_SUCCESS
);
65 Status
= NtUserEnumDisplaySettings(NULL
, 4, (DEVMODEW
*)&data
, 0);
66 TEST(Status
== STATUS_SUCCESS
);
67 Status
= NtUserEnumDisplaySettings(NULL
, 8, (DEVMODEW
*)&data
, 0);
68 TEST(Status
== STATUS_SUCCESS
);
70 Status
= NtUserEnumDisplaySettings(NULL
, 247, (DEVMODEW
*)&data
, 0);
71 TEST(Status
== STATUS_SUCCESS
);
72 Status
= NtUserEnumDisplaySettings(NULL
, 248, (DEVMODEW
*)&data
, 0);
73 TEST(Status
== STATUS_INVALID_PARAMETER_2
);
75 Status
= NtUserEnumDisplaySettings(NULL
, -1, (DEVMODEW
*)&data
, 0);
76 TEST(Status
== STATUS_SUCCESS
);
77 Status
= NtUserEnumDisplaySettings(NULL
, -2, (DEVMODEW
*)&data
, 0);
78 TEST(Status
== STATUS_SUCCESS
);
79 Status
= NtUserEnumDisplaySettings(NULL
, -3, (DEVMODEW
*)&data
, 0);
80 TEST(Status
== STATUS_SUCCESS
);
81 Status
= NtUserEnumDisplaySettings(NULL
, -4, (DEVMODEW
*)&data
, 0);
82 TEST(Status
== STATUS_INVALID_PARAMETER_2
);
84 Status
= NtUserEnumDisplaySettings(&usDeviceName
, ENUM_CURRENT_SETTINGS
, (DEVMODEW
*)&data
, 0);
85 TEST(Status
== STATUS_INVALID_PARAMETER_1
);
87 usDeviceName
.Buffer
= szName
;
88 usDeviceName
.Length
= wcslen(szName
);
89 usDeviceName
.MaximumLength
= usDeviceName
.Length
;
90 Status
= NtUserEnumDisplaySettings(&usDeviceName
, ENUM_CURRENT_SETTINGS
, (DEVMODEW
*)&data
, 0);
91 TEST(Status
== STATUS_INVALID_PARAMETER_1
);
93 Status
= NtUserEnumDisplaySettings(&usDeviceName
, 1000, (DEVMODEW
*)&data
, 123456);
94 TEST(Status
== STATUS_INVALID_PARAMETER_1
);
96 TEST(GetLastError() == ERROR_SUCCESS
);
98 return APISTATUS_NORMAL
;