42 if (ppdev->
dhpdev == dhpdev)
break;
101 ASSERT(ppdev->cPdevRefs >= 0);
104 if (ppdev->cPdevRefs == 0)
111 ppdev->pfn.DisableSurface(ppdev->dhpdev);
121 if (ppdev->dhpdev !=
NULL)
124 ppdev->pfn.DisablePDEV(ppdev->dhpdev);
136 while (!found && ppdevCurrent->
ppdevNext)
144 ppdevCurrent->
ppdevNext = ppdev->ppdevNext;
169 DPRINT(
"PDEVOBJ_bEnablePDEV()\n");
172 pfnEnablePDEV = ppdev->
pldev->pfn.EnablePDEV;
175 ppdev->
dhpdev = pfnEnablePDEV(pdevmode,
185 ppdev->pGraphicsDevice->DeviceObject);
186 if (ppdev->dhpdev ==
NULL)
188 DPRINT1(
"Failed to enable PDEV\n");
193 if (ppdev->gdiinfo.ulLogPixelsX == 0)
194 ppdev->gdiinfo.ulLogPixelsX = 96;
196 if (ppdev->gdiinfo.ulLogPixelsY == 0)
197 ppdev->gdiinfo.ulLogPixelsY = 96;
214 if (ppdev->ahsurf[
i] ==
NULL)
218 DPRINT(
"PDEVOBJ_bEnablePDEV - dhpdev = %p\n", ppdev->dhpdev);
229 ppdev->
pldev->pfn.CompletePDEV(ppdev->
dhpdev, (HDEV)ppdev);
243 hsurf = ppdev->
pldev->pfn.EnableSurface(ppdev->
dhpdev);
246 DPRINT1(
"Failed to create PDEV surface!\n");
296 DPRINT1(
"FIXME: EngpPopulateDeviceModeList failed, we just destroyed a perfectly good mode list\n");
353 DPRINT(
"EngpCreatePDEV(%wZ, %p)\n", pustrDeviceName, pdm);
359 if (!pGraphicsDevice)
361 DPRINT1(
"No GRAPHICS_DEVICE found for %ls!\n",
362 pustrDeviceName ? pustrDeviceName->
Buffer : 0);
375 DPRINT1(
"failed to allocate a PDEV\n");
391 DPRINT1(
"Could not load display driver '%ls', '%ls'\n",
423 DPRINT1(
"Failed to enable PDEV!\n");
444 PVOID *ppvPointer1 = pvPointer1;
445 PVOID *ppvPointer2 = pvPointer2;
448 pvTemp = *ppvPointer1;
449 *ppvPointer1 = *ppvPointer2;
450 *ppvPointer2 = pvTemp;
524 DPRINT1(
"PDEVOBJ_bSwitchMode, ppdev = %p, pSurface = %p\n", ppdev, ppdev->
pSurface);
532 DPRINT1(
"DrvAssertMode(FALSE) failed\n");
541 DPRINT1(
"Failed to create a new PDEV\n");
549 DPRINT1(
"PDEVOBJ_pSurface failed\n");
578 DPRINT1(
"DrvAssertMode(TRUE) failed\n");
674 ret |= CM_CMYK_COLOR;
676 ret |= CM_DEVICE_ICM;
687 PGDIINFO pGdiInfo = &ppdev->gdiinfo;
747 ASSERT(ppdev->
pldev->pGdiDriverInfo->DriverName.Buffer);
749 return ppdev->
pldev->pGdiDriverInfo->DriverName.Buffer;
904 NtGdiGetDeviceCapsAll(
BOOL NTAPI PDEVOBJ_bSwitchMode(PPDEVOBJ ppdev, PDEVMODEW pdm)
BOOLEAN EngpPopulateDeviceModeList(_Inout_ PGRAPHICS_DEVICE pGraphicsDevice, _In_ PDEVMODEW pdmDefault)
VOID WINAPI EngReleaseSemaphore(IN HSEMAPHORE hsem)
BOOL NTAPI PDEVOBJ_bEnablePDEV(PPDEVOBJ ppdev, PDEVMODEW pdevmode, PWSTR pwszLogAddress)
#define _Must_inspect_result_
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
#define STATUS_INSUFFICIENT_RESOURCES
typedef DHPDEV(APIENTRY FN_DrvEnablePDEV)(_In_ DEVMODEW *pdm
INT NTAPI PDEVOBJ_iGetColorManagementCaps(PPDEVOBJ ppdev)
FORCEINLINE PDC DC_LockDc(HDC hdc)
PDEVICE_OBJECT DeviceObject
#define SURFACE_ShareUnlockSurface(pBMObj)
PFN_DrvMovePointer pfnMovePointer
WCHAR szWinDeviceName[CCHDEVICENAME/2]
FORCEINLINE VOID PDEVOBJ_vReference(_In_ PPDEVOBJ ppdev)
PSURFACE NTAPI PDEVOBJ_pSurface(PPDEVOBJ ppdev)
_Must_inspect_result_ _Ret_z_ LPWSTR APIENTRY EngGetDriverName(_In_ HDEV hdev)
#define ERROR_INVALID_HANDLE
_Requires_lock_not_held_ hsem ENGAPI VOID APIENTRY EngDeleteSemaphore(_Inout_ __drv_freesMem(Mem) HSEMAPHORE hsem)
PDEVMODEENTRY pDevModeList
#define SURFACE_ShareLockSurface(hBMObj)
PGRAPHICS_DEVICE gpPrimaryGraphicsDevice
static PPDEVOBJ EngpCreatePDEV(PUNICODE_STRING pustrDeviceName, PDEVMODEW pdm)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
struct _PDEVOBJ * ppdevNext
struct _PDEVOBJ * PPDEVOBJ
PLDEVOBJ NTAPI EngLoadImageEx(_In_z_ LPWSTR pwszDriverName, _In_ ULONG ldevtype)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
INT APIENTRY NtGdiGetDeviceCaps(HDC hdc, INT Index)
PGRAPHICS_DEVICE NTAPI EngpFindGraphicsDevice(_In_opt_ PUNICODE_STRING pustrDevice, _In_ ULONG iDevNum, _In_ DWORD dwFlags)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define EXCEPTION_EXECUTE_HANDLER
static HSEMAPHORE ghsemPDEV
ENGAPI VOID APIENTRY EngAcquireSemaphore(_Inout_ HSEMAPHORE hsem)
VOID NTAPI PDEVOBJ_vGetDeviceCaps(IN PPDEVOBJ ppdev, OUT PDEVCAPS pDevCaps)
HSURF gahsurfHatch[HS_DDI_MAX]
#define PALETTE_ShareLockPalette(hpal)
typedef HSURF(APIENTRY FN_DrvEnableSurface)(_In_ DHPDEV dhpdev)
VOID NTAPI PDEVOBJ_vCompletePDEV(PPDEVOBJ ppdev)
#define GCAPS2_CHANGEGAMMARAMP
#define DISPLAY_DEVICE_PRIMARY_DEVICE
static PPDEVOBJ gppdevList
_In_ DD_SURFACE_LOCAL * pSurface
struct _DEVMODEINFO * pdmiNext
#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
static const UCHAR Index[8]
static VOID PDEVOBJ_vDeletePDEV(PPDEVOBJ ppdev)
PSIZEL FASTCALL PDEVOBJ_sizl(PPDEVOBJ ppdev, PSIZEL psizl)
_In_ LPWSTR pwszLogAddress
WCHAR dmDeviceName[CCHDEVICENAME]
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID NTAPI PDEVOBJ_vSwitchPdev(PPDEVOBJ ppdev, PPDEVOBJ ppdev2)
INIT_FUNCTION NTSTATUS NTAPI InitPDEVImpl(VOID)
#define InterlockedDecrement
#define DM_DISPLAYFREQUENCY
DHPDEV APIENTRY NtGdiGetDhpdev(IN HDEV hdev)
PDEVMODEW NTAPI PDEVOBJ_pdmMatchDevMode(PPDEVOBJ ppdev, PDEVMODEW pdm)
VOID FASTCALL SetLastNtError(NTSTATUS Status)
struct _EDD_DIRECTDRAW_GLOBAL * pEDDgpl
PFN_DrvMovePointer MovePointer
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
PFN_DrvAssertMode AssertMode
#define PALETTE_ShareUnlockPalette(ppal)
PPDEVOBJ PDEVOBJ_AllocPDEV(VOID)
VOID NTAPI GDIOBJ_vReferenceObjectByPointer(POBJ pobj)
VOID NTAPI PDEVOBJ_vRefreshModeList(PPDEVOBJ ppdev)
HSEMAPHORE WINAPI EngCreateSemaphore(VOID)
FN_DrvEnablePDEV * PFN_DrvEnablePDEV
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
ENGAPI VOID APIENTRY EngMovePointer(_In_ SURFOBJ *pso, _In_ LONG x, _In_ LONG y, _In_ RECTL *prcl)
#define _SEH2_EXCEPT(...)
PFN_DrvCompletePDEV CompletePDEV
#define ExFreePoolWithTag(_P, _T)
#define _SEH2_GetExceptionCode()
VOID NTAPI PDEVOBJ_vRelease(_Inout_ PPDEVOBJ ppdev)
PDEVMODEINFO pdevmodeInfo
PGRAPHICS_DEVICE pGraphicsDevice
FORCEINLINE VOID SwitchPointer(_Inout_ PVOID pvPointer1, _Inout_ PVOID pvPointer2)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
#define MmSystemRangeStart
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
PPDEVOBJ NTAPI EngpGetPDEV(_In_opt_ PUNICODE_STRING pustrDeviceName)
PPDEVOBJ NTAPI DbgLookupDHPDEV(DHPDEV dhpdev)