#include <win32k.h>
#include <debug.h>
Go to the source code of this file.
|
NTSTATUS NTAPI | InitPDEVImpl (VOID) |
|
PPDEVOBJ | PDEVOBJ_AllocPDEV (VOID) |
|
static VOID | PDEVOBJ_vDeletePDEV (PPDEVOBJ ppdev) |
|
VOID NTAPI | PDEVOBJ_vRelease (_Inout_ PPDEVOBJ ppdev) |
|
BOOL NTAPI | PDEVOBJ_bEnablePDEV (PPDEVOBJ ppdev, PDEVMODEW pdevmode, PWSTR pwszLogAddress) |
|
VOID NTAPI | PDEVOBJ_vCompletePDEV (PPDEVOBJ ppdev) |
|
PSURFACE NTAPI | PDEVOBJ_pSurface (PPDEVOBJ ppdev) |
|
VOID NTAPI | PDEVOBJ_vRefreshModeList (PPDEVOBJ ppdev) |
|
PDEVMODEW NTAPI | PDEVOBJ_pdmMatchDevMode (PPDEVOBJ ppdev, PDEVMODEW pdm) |
|
static PPDEVOBJ | EngpCreatePDEV (PUNICODE_STRING pustrDeviceName, PDEVMODEW pdm) |
|
FORCEINLINE VOID | SwitchPointer (_Inout_ PVOID pvPointer1, _Inout_ PVOID pvPointer2) |
|
VOID NTAPI | PDEVOBJ_vSwitchPdev (PPDEVOBJ ppdev, PPDEVOBJ ppdev2) |
|
BOOL NTAPI | PDEVOBJ_bSwitchMode (PPDEVOBJ ppdev, PDEVMODEW pdm) |
|
PPDEVOBJ NTAPI | EngpGetPDEV (_In_opt_ PUNICODE_STRING pustrDeviceName) |
|
INT NTAPI | PDEVOBJ_iGetColorManagementCaps (PPDEVOBJ ppdev) |
|
VOID NTAPI | PDEVOBJ_vGetDeviceCaps (IN PPDEVOBJ ppdev, OUT PDEVCAPS pDevCaps) |
|
_Must_inspect_result_ _Ret_z_ LPWSTR APIENTRY | EngGetDriverName (_In_ HDEV hdev) |
|
INT APIENTRY | NtGdiGetDeviceCaps (HDC hdc, INT Index) |
|
| _Success_ (return!=FALSE) |
|
DHPDEV APIENTRY | NtGdiGetDhpdev (IN HDEV hdev) |
|
PSIZEL FASTCALL | PDEVOBJ_sizl (PPDEVOBJ ppdev, PSIZEL psizl) |
|
◆ NDEBUG
◆ _Success_()
_Success_ |
( |
return! |
= FALSE | ) |
|
Definition at line 901 of file pdevobj.c.
FORCEINLINE PDC DC_LockDc(HDC hdc)
#define ERROR_INVALID_HANDLE
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define EXCEPTION_EXECUTE_HANDLER
VOID NTAPI PDEVOBJ_vGetDeviceCaps(IN PPDEVOBJ ppdev, OUT PDEVCAPS pDevCaps)
VOID FASTCALL SetLastNtError(NTSTATUS Status)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
#define RtlCopyMemory(Destination, Source, Length)
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionCode()
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
◆ EngGetDriverName()
Exported functions
Definition at line 740 of file pdevobj.c.
747 ASSERT(ppdev->
pldev->pGdiDriverInfo->DriverName.Buffer);
749 return ppdev->
pldev->pGdiDriverInfo->DriverName.Buffer;
struct _PDEVOBJ * PPDEVOBJ
◆ EngpCreatePDEV()
Definition at line 346 of file pdevobj.c.
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");
BOOL NTAPI PDEVOBJ_bEnablePDEV(PPDEVOBJ ppdev, PDEVMODEW pdevmode, PWSTR pwszLogAddress)
PDEVICE_OBJECT DeviceObject
PFN_DrvMovePointer pfnMovePointer
PDEVMODEENTRY pDevModeList
PGRAPHICS_DEVICE gpPrimaryGraphicsDevice
PLDEVOBJ NTAPI EngLoadImageEx(_In_z_ LPWSTR pwszDriverName, _In_ ULONG ldevtype)
PGRAPHICS_DEVICE NTAPI EngpFindGraphicsDevice(_In_opt_ PUNICODE_STRING pustrDevice, _In_ ULONG iDevNum, _In_ DWORD dwFlags)
VOID NTAPI PDEVOBJ_vCompletePDEV(PPDEVOBJ ppdev)
#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
WCHAR dmDeviceName[CCHDEVICENAME]
PDEVMODEW NTAPI PDEVOBJ_pdmMatchDevMode(PPDEVOBJ ppdev, PDEVMODEW pdm)
PFN_DrvMovePointer MovePointer
PPDEVOBJ PDEVOBJ_AllocPDEV(VOID)
ENGAPI VOID APIENTRY EngMovePointer(_In_ SURFOBJ *pso, _In_ LONG x, _In_ LONG y, _In_ RECTL *prcl)
VOID NTAPI PDEVOBJ_vRelease(_Inout_ PPDEVOBJ ppdev)
PGRAPHICS_DEVICE pGraphicsDevice
Referenced by EngpGetPDEV(), and PDEVOBJ_bSwitchMode().
◆ EngpGetPDEV()
Definition at line 595 of file pdevobj.c.
VOID WINAPI EngReleaseSemaphore(IN HSEMAPHORE hsem)
WCHAR szWinDeviceName[CCHDEVICENAME/2]
FORCEINLINE VOID PDEVOBJ_vReference(_In_ PPDEVOBJ ppdev)
static PPDEVOBJ EngpCreatePDEV(PUNICODE_STRING pustrDeviceName, PDEVMODEW pdm)
struct _PDEVOBJ * ppdevNext
static HSEMAPHORE ghsemPDEV
ENGAPI VOID APIENTRY EngAcquireSemaphore(_Inout_ HSEMAPHORE hsem)
#define DISPLAY_DEVICE_PRIMARY_DEVICE
static PPDEVOBJ gppdevList
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
PGRAPHICS_DEVICE pGraphicsDevice
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
Referenced by GreCreateCompatibleDC(), GreOpenDCW(), NtGdiExtEscape(), UserChangeDisplaySettings(), UserEnumCurrentDisplaySettings(), and UserEnumDisplaySettings().
◆ InitPDEVImpl()
Definition at line 21 of file pdevobj.c.
#define STATUS_INSUFFICIENT_RESOURCES
static HSEMAPHORE ghsemPDEV
HSEMAPHORE WINAPI EngCreateSemaphore(VOID)
Referenced by DriverEntry().
◆ NtGdiGetDeviceCaps()
Definition at line 755 of file pdevobj.c.
FORCEINLINE PDC DC_LockDc(HDC hdc)
#define ERROR_INVALID_HANDLE
VOID NTAPI PDEVOBJ_vGetDeviceCaps(IN PPDEVOBJ ppdev, OUT PDEVCAPS pDevCaps)
_In_ WDFCOLLECTION _In_ ULONG Index
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
◆ NtGdiGetDhpdev()
Definition at line 944 of file pdevobj.c.
VOID WINAPI EngReleaseSemaphore(IN HSEMAPHORE hsem)
typedef DHPDEV(APIENTRY FN_DrvEnablePDEV)(_In_ DEVMODEW *pdm
struct _PDEVOBJ * ppdevNext
static HSEMAPHORE ghsemPDEV
static PPDEVOBJ gppdevList
#define MmSystemRangeStart
◆ PDEVOBJ_AllocPDEV()
Definition at line 53 of file pdevobj.c.
#define ExAllocatePoolWithTag(hernya, size, tag)
struct _EDD_DIRECTDRAW_GLOBAL * pEDDgpl
HSEMAPHORE WINAPI EngCreateSemaphore(VOID)
#define RtlZeroMemory(Destination, Length)
#define ExFreePoolWithTag(_P, _T)
Referenced by EngpCreatePDEV().
◆ PDEVOBJ_bEnablePDEV()
Definition at line 161 of file pdevobj.c.
169 DPRINT(
"PDEVOBJ_bEnablePDEV()\n");
172 pfnEnablePDEV = ppdev->
pldev->pfn.EnablePDEV;
175 ppdev->
dhpdev = pfnEnablePDEV(pdevmode,
184 ppdev->pGraphicsDevice->pwszDescription,
185 ppdev->pGraphicsDevice->DeviceObject);
188 DPRINT1(
"Failed to enable PDEV\n");
218 DPRINT(
"PDEVOBJ_bEnablePDEV - dhpdev = %p\n", ppdev->
dhpdev);
struct _PALETTE * ppalSurf
HSURF gahsurfHatch[HS_DDI_MAX]
#define PALETTE_ShareLockPalette(hpal)
_In_ LPWSTR pwszLogAddress
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
FN_DrvEnablePDEV * PFN_DrvEnablePDEV
Referenced by EngpCreatePDEV().
◆ PDEVOBJ_bSwitchMode()
Definition at line 509 of file pdevobj.c.
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");
VOID WINAPI EngReleaseSemaphore(IN HSEMAPHORE hsem)
WCHAR szWinDeviceName[CCHDEVICENAME/2]
PSURFACE NTAPI PDEVOBJ_pSurface(PPDEVOBJ ppdev)
static PPDEVOBJ EngpCreatePDEV(PUNICODE_STRING pustrDeviceName, PDEVMODEW pdm)
static HSEMAPHORE ghsemPDEV
ENGAPI VOID APIENTRY EngAcquireSemaphore(_Inout_ HSEMAPHORE hsem)
VOID NTAPI PDEVOBJ_vGetDeviceCaps(IN PPDEVOBJ ppdev, OUT PDEVCAPS pDevCaps)
_In_ DD_SURFACE_LOCAL * pSurface
VOID NTAPI PDEVOBJ_vSwitchPdev(PPDEVOBJ ppdev, PPDEVOBJ ppdev2)
PFN_DrvAssertMode AssertMode
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
VOID NTAPI PDEVOBJ_vRelease(_Inout_ PPDEVOBJ ppdev)
PGRAPHICS_DEVICE pGraphicsDevice
Referenced by UserChangeDisplaySettings(), and UserRefreshDisplay().
◆ PDEVOBJ_iGetColorManagementCaps()
◆ PDEVOBJ_pdmMatchDevMode()
Definition at line 307 of file pdevobj.c.
PDEVMODEENTRY pDevModeList
#define DM_DISPLAYFREQUENCY
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
PGRAPHICS_DEVICE pGraphicsDevice
Referenced by EngpCreatePDEV(), PDEVOBJ_vRefreshModeList(), and UserChangeDisplaySettings().
◆ PDEVOBJ_pSurface()
◆ PDEVOBJ_sizl()
◆ PDEVOBJ_vCompletePDEV()
◆ PDEVOBJ_vDeletePDEV()
Definition at line 82 of file pdevobj.c.
_Requires_lock_not_held_ hsem ENGAPI VOID APIENTRY EngDeleteSemaphore(_Inout_ __drv_freesMem(Mem) HSEMAPHORE hsem)
struct _EDD_DIRECTDRAW_GLOBAL * pEDDgpl
#define ExFreePoolWithTag(_P, _T)
Referenced by PDEVOBJ_vRelease().
◆ PDEVOBJ_vGetDeviceCaps()
◆ PDEVOBJ_vRefreshModeList()
Definition at line 264 of file pdevobj.c.
296 DPRINT1(
"FIXME: EngpPopulateDeviceModeList failed, we just destroyed a perfectly good mode list\n");
BOOLEAN EngpPopulateDeviceModeList(_Inout_ PGRAPHICS_DEVICE pGraphicsDevice, _In_ PDEVMODEW pdmDefault)
VOID WINAPI EngReleaseSemaphore(IN HSEMAPHORE hsem)
PDEVMODEENTRY pDevModeList
ENGAPI VOID APIENTRY EngAcquireSemaphore(_Inout_ HSEMAPHORE hsem)
struct _DEVMODEINFO * pdmiNext
PDEVMODEW NTAPI PDEVOBJ_pdmMatchDevMode(PPDEVOBJ ppdev, PDEVMODEW pdm)
#define ExFreePoolWithTag(_P, _T)
PDEVMODEINFO pdevmodeInfo
PGRAPHICS_DEVICE pGraphicsDevice
Referenced by UserEnumDisplaySettings().
◆ PDEVOBJ_vRelease()
◆ PDEVOBJ_vSwitchPdev()
Definition at line 455 of file pdevobj.c.
PFN_DrvCompletePDEV CompletePDEV
PGRAPHICS_DEVICE pGraphicsDevice
FORCEINLINE VOID SwitchPointer(_Inout_ PVOID pvPointer1, _Inout_ PVOID pvPointer2)
Referenced by PDEVOBJ_bSwitchMode().
◆ SwitchPointer()
Definition at line 440 of file pdevobj.c.
444 PVOID *ppvPointer1 = pvPointer1;
445 PVOID *ppvPointer2 = pvPointer2;
448 pvTemp = *ppvPointer1;
449 *ppvPointer1 = *ppvPointer2;
450 *ppvPointer2 = pvTemp;
Referenced by PDEVOBJ_vSwitchPdev().
◆ ghsemPDEV
◆ gppdevList
◆ gppdevPrimary
Definition at line 13 of file pdevobj.c.
Referenced by co_IntInitializeDesktopGraphics(), DC_vInitDc(), EBRUSHOBJ_bRealizeBrush(), EBRUSHOBJ_psoMask(), EngpGetPDEV(), InitMetrics(), IntCreatePrimarySurface(), IntEnumHDev(), PDEVOBJ_bSwitchMode(), PDEVOBJ_vRelease(), and VideoPortCallout().