/*++ * @name DxEngSetDeviceGammaRamp * @implemented * * The function DxEngSetDeviceGammaRamp sets gamma ramp from dxg.sys * @param HDEV hPDev * The hdev * * @param PGAMMARAMP Ramp * Value to change gamma ramp to. * * @param BOOL Test * Whether gamma should be tested. TRUE to test, FALSE to not test. * * @return *Returns TRUE for success, FALSE for failure. * * @remarks. * None * *--*/ BOOLEAN APIENTRY DxEngSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Test) { DPRINT1("ReactX Calling : DxEngSetDeviceGammaRamp\n"); return IntSetDeviceGammaRamp(hPDev, Ramp, Test); }
BOOL APIENTRY NtGdiSetDeviceGammaRamp(HDC hDC, LPVOID Ramp) { BOOL Ret; PDC dc; NTSTATUS Status = STATUS_SUCCESS; PGAMMARAMP SafeRamp; if (!Ramp) return FALSE; dc = DC_LockDc(hDC); if (!dc) { EngSetLastError(ERROR_INVALID_HANDLE); return FALSE; } SafeRamp = ExAllocatePoolWithTag(PagedPool, sizeof(GAMMARAMP), GDITAG_ICM); if (!SafeRamp) { DC_UnlockDc(dc); EngSetLastError(STATUS_NO_MEMORY); return FALSE; } _SEH2_TRY { ProbeForRead( Ramp, sizeof(PVOID), 1); RtlCopyMemory( SafeRamp, Ramp, sizeof(GAMMARAMP)); } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { Status = _SEH2_GetExceptionCode(); } _SEH2_END; if (!NT_SUCCESS(Status)) { DC_UnlockDc(dc); ExFreePoolWithTag(SafeRamp, GDITAG_ICM); SetLastNtError(Status); return FALSE; } Ret = IntSetDeviceGammaRamp((HDEV)dc->ppdev, SafeRamp, TRUE); DC_UnlockDc(dc); ExFreePoolWithTag(SafeRamp, GDITAG_ICM); return Ret; }