- Revert 33274, except the change in GetDisplayNumberFromDeviceName(), where a zero-length string should be actually accepted.

- As for other changes in 33274: removed accidentally committed DPRINT1s by Magnus, removed unneeded DisplayNumber zero-init, because it's always initialized by a call to GetDisplayNumberFromDeviceName().

svn path=/trunk/; revision=33290
This commit is contained in:
Aleksey Bragin 2008-05-05 08:28:41 +00:00
parent a293245d61
commit 63cc11fc79

View file

@ -2741,17 +2741,10 @@ GetDisplayNumberFromDeviceName(
if (DisplayNumber == NULL) if (DisplayNumber == NULL)
return STATUS_INVALID_PARAMETER_2; return STATUS_INVALID_PARAMETER_2;
DPRINT1("GetDisplayNumberFromDeviceName Pass 1 seh \n"); /* Check if DeviceName is valid */
if (pDeviceName &&
if ((pDeviceName != NULL) && (pDeviceName->Length != 0)) pDeviceName->Length > 0 && pDeviceName->Length <= DisplayString.Length)
{ return STATUS_OBJECT_NAME_INVALID;
if (pDeviceName->Length <= DisplayString.Length)
{
DPRINT1("GetDisplayNumberFromDeviceName FAIL pDeviceName : %wZ \n",pDeviceName);
DPRINT1("GetDisplayNumberFromDeviceName FAIL pDeviceName->Length : %d \n",pDeviceName->Length);
return STATUS_OBJECT_NAME_INVALID;
}
}
if (pDeviceName == NULL || pDeviceName->Length == 0) if (pDeviceName == NULL || pDeviceName->Length == 0)
{ {
@ -2790,7 +2783,7 @@ GetDisplayNumberFromDeviceName(
Number = Number * 10 + Char - L'0'; Number = Number * 10 + Char - L'0';
else if (Char != L'\0') else if (Char != L'\0')
return STATUS_OBJECT_NAME_INVALID; return STATUS_OBJECT_NAME_INVALID;
} }
*DisplayNumber = Number - 1; *DisplayNumber = Number - 1;
} }
@ -2816,7 +2809,7 @@ IntEnumDisplaySettings(
static UNICODE_STRING CachedDeviceName; static UNICODE_STRING CachedDeviceName;
PDEVMODEW CachedMode = NULL; PDEVMODEW CachedMode = NULL;
DEVMODEW DevMode; DEVMODEW DevMode;
ULONG DisplayNumber = 0; ULONG DisplayNumber;
if (!NT_SUCCESS(GetDisplayNumberFromDeviceName(pDeviceName, &DisplayNumber))) if (!NT_SUCCESS(GetDisplayNumberFromDeviceName(pDeviceName, &DisplayNumber)))
{ {
@ -2824,8 +2817,6 @@ IntEnumDisplaySettings(
return FALSE; return FALSE;
} }
DPRINT1("IntEnumDisplaySettings Pass 1 seh \n");
DPRINT("DevMode->dmSize = %d\n", pDevMode->dmSize); DPRINT("DevMode->dmSize = %d\n", pDevMode->dmSize);
DPRINT("DevMode->dmExtraSize = %d\n", pDevMode->dmDriverExtra); DPRINT("DevMode->dmExtraSize = %d\n", pDevMode->dmDriverExtra);
if (pDevMode->dmSize != SIZEOF_DEVMODEW_300 && if (pDevMode->dmSize != SIZEOF_DEVMODEW_300 &&
@ -2836,17 +2827,13 @@ IntEnumDisplaySettings(
return FALSE; return FALSE;
} }
DPRINT1("IntEnumDisplaySettings Pass 2 seh \n");
if (iModeNum == ENUM_CURRENT_SETTINGS) if (iModeNum == ENUM_CURRENT_SETTINGS)
{ {
DPRINT1("IntEnumDisplaySettings ENUM_CURRENT_SETTINGS \n");
CachedMode = &PrimarySurface.DMW; CachedMode = &PrimarySurface.DMW;
ASSERT(CachedMode->dmSize > 0); ASSERT(CachedMode->dmSize > 0);
} }
else if (iModeNum == ENUM_REGISTRY_SETTINGS) else if (iModeNum == ENUM_REGISTRY_SETTINGS)
{ {
DPRINT1("IntEnumDisplaySettings ENUM_REGISTRY_SETTINGS \n");
RtlZeroMemory(&DevMode, sizeof (DevMode)); RtlZeroMemory(&DevMode, sizeof (DevMode));
DevMode.dmSize = sizeof (DevMode); DevMode.dmSize = sizeof (DevMode);
DevMode.dmDriverExtra = 0; DevMode.dmDriverExtra = 0;
@ -2860,13 +2847,9 @@ IntEnumDisplaySettings(
/* FIXME: Maybe look for the matching devmode supplied by the /* FIXME: Maybe look for the matching devmode supplied by the
* driver so we can provide driver private/extra data? * driver so we can provide driver private/extra data?
*/ */
DPRINT1("IntEnumDisplaySettings Pass 3 seh \n");
} }
else else
{ {
DPRINT1("IntEnumDisplaySettings NO FLAGs \n");
BOOL IsCachedDevice = (CachedDevModes != NULL); BOOL IsCachedDevice = (CachedDevModes != NULL);
if (CachedDevModes && if (CachedDevModes &&
@ -2883,8 +2866,6 @@ IntEnumDisplaySettings(
LPWSTR CurrentName; LPWSTR CurrentName;
DRVENABLEDATA DrvEnableData; DRVENABLEDATA DrvEnableData;
DPRINT1("IntEnumDisplaySettings iModeNum \n");
/* Free resources from last driver cache */ /* Free resources from last driver cache */
if (IsCachedDevice == FALSE && CachedDeviceName.Buffer != NULL) if (IsCachedDevice == FALSE && CachedDeviceName.Buffer != NULL)
{ {
@ -2899,16 +2880,12 @@ IntEnumDisplaySettings(
return FALSE; return FALSE;
} }
DPRINT1("IntEnumDisplaySettings Pass 4 seh \n");
if (!IntPrepareDriverIfNeeded()) if (!IntPrepareDriverIfNeeded())
{ {
DPRINT1("IntPrepareDriverIfNeeded failed\n"); DPRINT1("IntPrepareDriverIfNeeded failed\n");
return FALSE; return FALSE;
} }
DPRINT1("IntEnumDisplaySettings Pass 5 seh \n");
/* /*
* DriverFileNames may be a list of drivers in REG_SZ_MULTI format, * DriverFileNames may be a list of drivers in REG_SZ_MULTI format,
* scan all of them until a good one found. * scan all of them until a good one found.
@ -2989,9 +2966,6 @@ IntEnumDisplaySettings(
SetLastWin32Error(STATUS_NO_MEMORY); SetLastWin32Error(STATUS_NO_MEMORY);
return FALSE; return FALSE;
} }
DPRINT1("IntEnumDisplaySettings Pass 6 seh \n");
if (CachedDevModes != NULL) if (CachedDevModes != NULL)
{ {
RtlCopyMemory(NewBuffer, CachedDevModes, SizeUsed); RtlCopyMemory(NewBuffer, CachedDevModes, SizeUsed);
@ -3030,19 +3004,12 @@ IntEnumDisplaySettings(
} }
/* return cached info */ /* return cached info */
DPRINT1("IntEnumDisplaySettings return cached info \n");
CachedMode = CachedDevModes; CachedMode = CachedDevModes;
if (CachedMode >= CachedDevModesEnd) if (CachedMode >= CachedDevModesEnd)
{ {
SetLastWin32Error(STATUS_NO_MORE_ENTRIES); SetLastWin32Error(STATUS_NO_MORE_ENTRIES);
return FALSE; return FALSE;
} }
DPRINT1("IntEnumDisplaySettings Pass 7 seh \n");
while (iModeNum-- > 0 && CachedMode < CachedDevModesEnd) while (iModeNum-- > 0 && CachedMode < CachedDevModesEnd)
{ {
assert(CachedMode->dmSize > 0); assert(CachedMode->dmSize > 0);
@ -3053,14 +3020,10 @@ IntEnumDisplaySettings(
SetLastWin32Error(STATUS_NO_MORE_ENTRIES); SetLastWin32Error(STATUS_NO_MORE_ENTRIES);
return FALSE; return FALSE;
} }
DPRINT1("IntEnumDisplaySettings Pass 8 seh \n");
} }
ASSERT(CachedMode != NULL); ASSERT(CachedMode != NULL);
DPRINT1("IntEnumDisplaySettings Pass 9 seh \n");
RtlCopyMemory(pDevMode, CachedMode, min(pDevMode->dmSize, CachedMode->dmSize)); RtlCopyMemory(pDevMode, CachedMode, min(pDevMode->dmSize, CachedMode->dmSize));
RtlZeroMemory(pDevMode + pDevMode->dmSize, pDevMode->dmDriverExtra); RtlZeroMemory(pDevMode + pDevMode->dmSize, pDevMode->dmDriverExtra);
RtlCopyMemory(pDevMode + min(pDevMode->dmSize, CachedMode->dmSize), CachedMode + CachedMode->dmSize, min(pDevMode->dmDriverExtra, CachedMode->dmDriverExtra)); RtlCopyMemory(pDevMode + min(pDevMode->dmSize, CachedMode->dmSize), CachedMode + CachedMode->dmSize, min(pDevMode->dmDriverExtra, CachedMode->dmDriverExtra));