@@ -304,6 +304,14 @@ SpiUpdatePerUserSystemParameters(VOID)
304
304
gspv .bScrSaverSecure = FALSE;
305
305
#endif
306
306
307
+ gspv .accesstimeout .cbSize = sizeof (ACCESSTIMEOUT );
308
+ gspv .filterkeys .cbSize = sizeof (FILTERKEYS );
309
+ gspv .togglekeys .cbSize = sizeof (TOGGLEKEYS );
310
+ gspv .mousekeys .cbSize = sizeof (MOUSEKEYS );
311
+ gspv .stickykeys .cbSize = sizeof (STICKYKEYS );
312
+ gspv .serialkeys .cbSize = sizeof (SERIALKEYS );
313
+ gspv .soundsentry .cbSize = sizeof (SOUNDSENTRY );
314
+
307
315
/* Make sure we don't use broken values */
308
316
SpiFixupValues ();
309
317
@@ -438,7 +446,7 @@ SpiMemCopy(PVOID pvDst, PVOID pvSrc, ULONG cbSize, BOOL bProtect, BOOL bToUser)
438
446
{
439
447
Status = _SEH2_GetExceptionCode ();
440
448
}
441
- _SEH2_END
449
+ _SEH2_END ;
442
450
}
443
451
else
444
452
{
@@ -880,7 +888,7 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
880
888
if (fl & SPIF_UPDATEINIFILE )
881
889
{
882
890
SpiStoreFont (L"IconFont" , & gspv .im .lfFont );
883
- }
891
+ }
884
892
return (UINT_PTR )KEY_METRIC ;
885
893
886
894
case SPI_SETDOUBLECLICKTIME :
@@ -894,7 +902,7 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
894
902
895
903
case SPI_SETFASTTASKSWITCH :
896
904
/* According to Winetest this one is unimplemented */
897
- return 0 ;
905
+ return 1 ;
898
906
899
907
case SPI_GETDRAGFULLWINDOWS :
900
908
return SpiGetInt (pvParam , & gspv .bDragFullWindows , fl );
@@ -1011,40 +1019,102 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
1011
1019
break ;
1012
1020
1013
1021
case SPI_GETFILTERKEYS :
1022
+ {
1023
+ LPFILTERKEYS FilterKeys = (LPFILTERKEYS )pvParam ;
1024
+
1025
+ if (uiParam != 0 && uiParam != sizeof (FILTERKEYS ))
1026
+ return 0 ;
1027
+
1028
+ if (!FilterKeys || FilterKeys -> cbSize != sizeof (FILTERKEYS ))
1029
+ return 0 ;
1030
+
1014
1031
return SpiGet (pvParam , & gspv .filterkeys , sizeof (FILTERKEYS ), fl );
1032
+ }
1015
1033
1016
1034
case SPI_SETFILTERKEYS :
1035
+ {
1036
+ LPFILTERKEYS FilterKeys = (LPFILTERKEYS )pvParam ;
1037
+
1038
+ if (uiParam != 0 && uiParam != sizeof (FILTERKEYS ))
1039
+ return 0 ;
1040
+
1041
+ if (!FilterKeys || FilterKeys -> cbSize != sizeof (FILTERKEYS ))
1042
+ return 0 ;
1043
+
1017
1044
if (!SpiSet (& gspv .filterkeys , pvParam , sizeof (FILTERKEYS ), fl ))
1018
1045
return 0 ;
1019
1046
if (fl & SPIF_UPDATEINIFILE )
1020
1047
{
1021
1048
// FIXME: What to do?
1022
1049
}
1023
1050
return (UINT_PTR )KEY_DESKTOP ;
1051
+ }
1024
1052
1025
1053
case SPI_GETTOGGLEKEYS :
1054
+ {
1055
+ LPTOGGLEKEYS ToggleKeys = (LPTOGGLEKEYS )pvParam ;
1056
+
1057
+ if (uiParam != 0 && uiParam != sizeof (TOGGLEKEYS ))
1058
+ return 0 ;
1059
+
1060
+ if (!ToggleKeys || ToggleKeys -> cbSize != sizeof (TOGGLEKEYS ))
1061
+ return 0 ;
1062
+
1026
1063
return SpiGet (pvParam , & gspv .togglekeys , sizeof (TOGGLEKEYS ), fl );
1064
+ }
1027
1065
1028
1066
case SPI_SETTOGGLEKEYS :
1067
+ {
1068
+ LPTOGGLEKEYS ToggleKeys = (LPTOGGLEKEYS )pvParam ;
1069
+
1070
+ if (uiParam != 0 && uiParam != sizeof (TOGGLEKEYS ))
1071
+ return 0 ;
1072
+
1073
+ if (!ToggleKeys || ToggleKeys -> cbSize != sizeof (TOGGLEKEYS ))
1074
+ return 0 ;
1075
+
1029
1076
if (!SpiSet (& gspv .togglekeys , pvParam , sizeof (TOGGLEKEYS ), fl ))
1030
1077
return 0 ;
1078
+
1031
1079
if (fl & SPIF_UPDATEINIFILE )
1032
1080
{
1033
1081
// FIXME: What to do?
1034
1082
}
1035
1083
return (UINT_PTR )KEY_DESKTOP ;
1084
+ }
1036
1085
1037
1086
case SPI_GETMOUSEKEYS :
1087
+ {
1088
+ LPMOUSEKEYS MouseKeys = (LPMOUSEKEYS )pvParam ;
1089
+
1090
+ if (uiParam != 0 && uiParam != sizeof (MOUSEKEYS ))
1091
+ return 0 ;
1092
+
1093
+ if (!MouseKeys || MouseKeys -> cbSize != sizeof (MOUSEKEYS ))
1094
+ return 0 ;
1095
+
1038
1096
return SpiGet (pvParam , & gspv .mousekeys , sizeof (MOUSEKEYS ), fl );
1097
+ }
1039
1098
1040
1099
case SPI_SETMOUSEKEYS :
1100
+ {
1101
+ LPMOUSEKEYS MouseKeys = (LPMOUSEKEYS )pvParam ;
1102
+
1103
+ if (uiParam != 0 && uiParam != sizeof (MOUSEKEYS ))
1104
+ return 0 ;
1105
+
1106
+ if (!MouseKeys || MouseKeys -> cbSize != sizeof (MOUSEKEYS ))
1107
+ return 0 ;
1108
+
1041
1109
if (!SpiSet (& gspv .mousekeys , pvParam , sizeof (MOUSEKEYS ), fl ))
1042
1110
return 0 ;
1111
+
1043
1112
if (fl & SPIF_UPDATEINIFILE )
1044
1113
{
1045
1114
// FIXME: What to do?
1046
1115
}
1047
1116
return (UINT_PTR )KEY_DESKTOP ;
1117
+ }
1048
1118
1049
1119
case SPI_GETSHOWSOUNDS :
1050
1120
return SpiGetInt (pvParam , & gspv .bShowSounds , fl );
@@ -1053,56 +1123,140 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
1053
1123
return SpiSetBool (& gspv .bShowSounds , uiParam , KEY_SHOWSNDS , VAL_ON , fl );
1054
1124
1055
1125
case SPI_GETSTICKYKEYS :
1126
+ {
1127
+ LPSTICKYKEYS StickyKeys = (LPSTICKYKEYS )pvParam ;
1128
+
1056
1129
if (uiParam != 0 && uiParam != sizeof (STICKYKEYS ))
1057
1130
return 0 ;
1131
+
1132
+ if (!StickyKeys || StickyKeys -> cbSize != sizeof (STICKYKEYS ))
1133
+ return 0 ;
1134
+
1058
1135
return SpiGetEx (pvParam , & gspv .stickykeys , sizeof (STICKYKEYS ), fl );
1136
+ }
1059
1137
1060
1138
case SPI_SETSTICKYKEYS :
1139
+ {
1140
+ LPSTICKYKEYS StickyKeys = (LPSTICKYKEYS )pvParam ;
1141
+
1142
+ if (uiParam != 0 && uiParam != sizeof (STICKYKEYS ))
1143
+ return 0 ;
1144
+
1145
+ if (!StickyKeys || StickyKeys -> cbSize != sizeof (STICKYKEYS ))
1146
+ return 0 ;
1147
+
1061
1148
if (!SpiSet (& gspv .stickykeys , pvParam , sizeof (STICKYKEYS ), fl ))
1062
1149
return 0 ;
1150
+
1063
1151
if (fl & SPIF_UPDATEINIFILE )
1064
1152
{
1065
1153
// FIXME: What to do?
1066
1154
}
1067
1155
return (UINT_PTR )KEY_DESKTOP ;
1156
+ }
1068
1157
1069
1158
case SPI_GETACCESSTIMEOUT :
1159
+ {
1160
+ LPACCESSTIMEOUT AccessTimeout = (LPACCESSTIMEOUT )pvParam ;
1161
+
1070
1162
if (uiParam != 0 && uiParam != sizeof (ACCESSTIMEOUT ))
1071
1163
return 0 ;
1164
+
1165
+ if (!AccessTimeout || AccessTimeout -> cbSize != sizeof (ACCESSTIMEOUT ))
1166
+ return 0 ;
1167
+
1072
1168
return SpiGetEx (pvParam , & gspv .accesstimeout , sizeof (ACCESSTIMEOUT ), fl );
1169
+ }
1073
1170
1074
1171
case SPI_SETACCESSTIMEOUT :
1172
+ {
1173
+ LPACCESSTIMEOUT AccessTimeout = (LPACCESSTIMEOUT )pvParam ;
1174
+
1175
+ if (uiParam != 0 && uiParam != sizeof (ACCESSTIMEOUT ))
1176
+ {
1177
+ return 0 ;
1178
+ }
1179
+
1180
+ if (!AccessTimeout || AccessTimeout -> cbSize != sizeof (ACCESSTIMEOUT ))
1181
+ {
1182
+ return 0 ;
1183
+ }
1184
+
1075
1185
if (!SpiSet (& gspv .accesstimeout , pvParam , sizeof (ACCESSTIMEOUT ), fl ))
1076
1186
return 0 ;
1187
+
1077
1188
if (fl & SPIF_UPDATEINIFILE )
1078
1189
{
1079
1190
// FIXME: What to do?
1080
1191
}
1081
1192
return (UINT_PTR )KEY_DESKTOP ;
1193
+ }
1082
1194
1083
1195
case SPI_GETSERIALKEYS :
1196
+ {
1197
+ LPSERIALKEYS SerialKeys = (LPSERIALKEYS )pvParam ;
1198
+
1199
+ if (uiParam != 0 && uiParam != sizeof (SERIALKEYS ))
1200
+ return 0 ;
1201
+
1202
+ if (!SerialKeys || SerialKeys -> cbSize != sizeof (SERIALKEYS ))
1203
+ return 0 ;
1204
+
1084
1205
return SpiGet (pvParam , & gspv .serialkeys , sizeof (SERIALKEYS ), fl );
1206
+ }
1085
1207
1086
1208
case SPI_SETSERIALKEYS :
1209
+ {
1210
+ LPSERIALKEYS SerialKeys = (LPSERIALKEYS )pvParam ;
1211
+
1212
+ if (uiParam != 0 && uiParam != sizeof (SERIALKEYS ))
1213
+ return 0 ;
1214
+
1215
+ if (!SerialKeys || SerialKeys -> cbSize != sizeof (SERIALKEYS ))
1216
+ return 0 ;
1217
+
1087
1218
if (!SpiSet (& gspv .serialkeys , pvParam , sizeof (SERIALKEYS ), fl ))
1088
1219
return 0 ;
1220
+
1089
1221
if (fl & SPIF_UPDATEINIFILE )
1090
1222
{
1091
1223
// FIXME: What to do?
1092
1224
}
1093
1225
return (UINT_PTR )KEY_DESKTOP ;
1226
+ }
1094
1227
1095
1228
case SPI_GETSOUNDSENTRY :
1229
+ {
1230
+ LPSOUNDSENTRY SoundsEntry = (LPSOUNDSENTRY )pvParam ;
1231
+
1232
+ if (uiParam != 0 && uiParam != sizeof (SOUNDSENTRY ))
1233
+ return 0 ;
1234
+
1235
+ if (!SoundsEntry || SoundsEntry -> cbSize != sizeof (SOUNDSENTRY ))
1236
+ return 0 ;
1237
+
1096
1238
return SpiGet (pvParam , & gspv .soundsentry , sizeof (SOUNDSENTRY ), fl );
1239
+ }
1097
1240
1098
1241
case SPI_SETSOUNDSENTRY :
1242
+ {
1243
+ LPSOUNDSENTRY SoundsEntry = (LPSOUNDSENTRY )pvParam ;
1244
+
1245
+ if (uiParam != 0 && uiParam != sizeof (SOUNDSENTRY ))
1246
+ return 0 ;
1247
+
1248
+ if (!SoundsEntry || SoundsEntry -> cbSize != sizeof (SOUNDSENTRY ))
1249
+ return 0 ;
1250
+
1099
1251
if (!SpiSet (& gspv .soundsentry , pvParam , sizeof (SOUNDSENTRY ), fl ))
1100
1252
return 0 ;
1253
+
1101
1254
if (fl & SPIF_UPDATEINIFILE )
1102
1255
{
1103
1256
// FIXME: What to do?
1104
1257
}
1105
1258
return (UINT_PTR )KEY_DESKTOP ;
1259
+ }
1106
1260
1107
1261
case SPI_GETHIGHCONTRAST :
1108
1262
return SpiGet (pvParam , & gspv .highcontrast , sizeof (HIGHCONTRAST ), fl );
0 commit comments