[Spice-devel] [PATCH qxl-wddm-dod v6 2/4] Using declspec instead of #pragma to declare pageable functions

Sameeh Jubran sameeh at daynix.com
Wed Sep 28 13:47:54 UTC 2016


On Wed, Sep 28, 2016 at 4:30 PM, Christophe Fergeau <cfergeau at redhat.com>
wrote:

> On Wed, Sep 28, 2016 at 02:09:26PM +0300, Sameeh Jubran wrote:
> > This patch replaces the "#pragma code_seg(push)" and "#pragma
> code_seg(pop)"
> > with __declspec(code_seg("PAGE")) for declaring code as pageable. This
> > change enahnces maintainability as it is much clearer which functions
> are paged.
>
> s/enahnces/enhances/
>
> 1/4 already adds PAGED_CODE at the beginning of each paged functions, do
> we really need to add a second reminder to each function? This also
>
The PAGED_CODE is not a reminder it is a runtime assertion that makes
sure that these functions are not used in high IRQL. However
__declspec(code_seg("PAGE"))
makes the function pageable. By default all of the driver code is not
pageable, this
macro instructs the driver that those functions are pageable.


> adds it 2 times, once in the .h file and once in the .cpp file for more
> redundancy. Imo the current way it's done is enough (unless some
> functions which should be marked as pageable aren't).
>
Adding them twice is required for compilation, it won't compile otherwise.

>
> If you want something explicit, what could be done instead is to
> explicitly mark the non-pageable functions so that these ones too can be
> seen at once, rather than having to look for what is missing from these
> functions declarations/definitions.
>
We can do this using a combination of #pargma and declspec however this
would be
very dangerous as one can easily make a mistake.

This patch can be dropped anyways as it offers a minor optimization.

>
>
> Christophe
>
> >
> > Signed-off-by: Sameeh Jubran <sameeh at daynix.com>
> > ---
> >  qxldod/QxlDod.cpp | 140 ++++++++++++++++++++++++++++++
> +++++++++++++-------
> >  qxldod/QxlDod.h   | 151 ++++++++++++++++++++++++++++++
> +++++++++++++++++++++---
> >  2 files changed, 267 insertions(+), 24 deletions(-)
> >
> > diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp
> > index ef21176..2bc6b77 100755
> > --- a/qxldod/QxlDod.cpp
> > +++ b/qxldod/QxlDod.cpp
> > @@ -2,8 +2,6 @@
> >  #include "qxldod.h"
> >  #include "qxl_windows.h"
> >
> > -#pragma code_seg(push)
> > -#pragma code_seg()
> >
> >  #define WIN_QXL_INT_MASK ((QXL_INTERRUPT_DISPLAY) | \
> >                            (QXL_INTERRUPT_CURSOR) | \
> > @@ -47,7 +45,6 @@ BYTE PixelMask[BITS_PER_BYTE]  = {0x80, 0x40, 0x20,
> 0x10, 0x08, 0x04, 0x02, 0x01
> >                                         ((ULONG)LOWER_5_BITS((Pixel)) <<
> SHIFT_LOWER_5_IN_565_BACK))
> >
> >
> > -#pragma code_seg(pop)
> >
> >  struct QXLEscape {
> >      uint32_t ioctl;
> > @@ -57,6 +54,7 @@ struct QXLEscape {
> >      };
> >  };
> >
> > +QXL_PAGED
> >  QxlDod::QxlDod(_In_ DEVICE_OBJECT* pPhysicalDeviceObject) :
> m_pPhysicalDevice(pPhysicalDeviceObject),
> >
> m_MonitorPowerState(PowerDeviceD0),
> >
> m_AdapterPowerState(PowerDeviceD0)
> > @@ -73,7 +71,7 @@ QxlDod::QxlDod(_In_ DEVICE_OBJECT*
> pPhysicalDeviceObject) : m_pPhysicalDevice(pP
> >      DbgPrint(TRACE_LEVEL_INFORMATION, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > -
> > +QXL_PAGED
> >  QxlDod::~QxlDod(void)
> >  {
> >      PAGED_CODE();
> > @@ -82,6 +80,7 @@ QxlDod::~QxlDod(void)
> >      m_pHWDevice = NULL;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::CheckHardware()
> >  {
> >      PAGED_CODE();
> > @@ -119,6 +118,7 @@ NTSTATUS QxlDod::CheckHardware()
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::StartDevice(_In_  DXGK_START_INFO*   pDxgkStartInfo,
> >                           _In_  DXGKRNL_INTERFACE* pDxgkInterface,
> >                           _Out_ ULONG*             pNumberOfViews,
> > @@ -209,6 +209,7 @@ NTSTATUS QxlDod::StartDevice(_In_  DXGK_START_INFO*
>  pDxgkStartInfo,
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::StopDevice(VOID)
> >  {
> >      PAGED_CODE();
> > @@ -216,6 +217,7 @@ NTSTATUS QxlDod::StopDevice(VOID)
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  VOID QxlDod::CleanUp(VOID)
> >  {
> >      PAGED_CODE();
> > @@ -228,7 +230,7 @@ VOID QxlDod::CleanUp(VOID)
> >      }
> >  }
> >
> > -
> > +QXL_PAGED
> >  NTSTATUS QxlDod::DispatchIoRequest(_In_  ULONG VidPnSourceId,
> >                                     _In_  VIDEO_REQUEST_PACKET*
> pVideoRequestPacket)
> >  {
> > @@ -240,6 +242,7 @@ NTSTATUS QxlDod::DispatchIoRequest(_In_  ULONG
> VidPnSourceId,
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  PCHAR
> >  DbgDevicePowerString(
> >      __in DEVICE_POWER_STATE Type
> > @@ -265,6 +268,7 @@ DbgDevicePowerString(
> >      }
> >  }
> >
> > +QXL_PAGED
> >  PCHAR
> >  DbgPowerActionString(
> >      __in POWER_ACTION Type
> > @@ -294,6 +298,7 @@ DbgPowerActionString(
> >      }
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::SetPowerState(_In_  ULONG HardwareUid,
> >                                 _In_  DEVICE_POWER_STATE
> DevicePowerState,
> >                                 _In_  POWER_ACTION       ActionType)
> > @@ -327,6 +332,7 @@ NTSTATUS QxlDod::SetPowerState(_In_  ULONG
> HardwareUid,
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::QueryChildRelations(_Out_writes_bytes_(ChildRelationsSize)
> DXGK_CHILD_DESCRIPTOR* pChildRelations,
> >                                       _In_  ULONG  ChildRelationsSize)
> >  {
> > @@ -356,6 +362,7 @@ NTSTATUS QxlDod::QueryChildRelations(_
> Out_writes_bytes_(ChildRelationsSize) DXGK
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::QueryChildStatus(_Inout_ DXGK_CHILD_STATUS*
> pChildStatus,
> >                                                  _In_    BOOLEAN
>     NonDestructiveOnly)
> >  {
> > @@ -391,6 +398,7 @@ NTSTATUS QxlDod::QueryChildStatus(_Inout_
> DXGK_CHILD_STATUS* pChildStatus,
> >  }
> >
> >  // EDID retrieval
> > +QXL_PAGED
> >  NTSTATUS QxlDod::QueryDeviceDescriptor(_In_    ULONG
>  ChildUid,
> >                                         _Inout_ DXGK_DEVICE_DESCRIPTOR*
> pDeviceDescriptor)
> >  {
> > @@ -403,6 +411,7 @@ NTSTATUS QxlDod::QueryDeviceDescriptor(_In_
> ULONG                   ChildUid,
> >      return STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::QueryAdapterInfo(_In_ CONST DXGKARG_QUERYADAPTERINFO*
> pQueryAdapterInfo)
> >  {
> >      PAGED_CODE();
> > @@ -447,6 +456,7 @@ NTSTATUS QxlDod::QueryAdapterInfo(_In_ CONST
> DXGKARG_QUERYADAPTERINFO* pQueryAda
> >      }
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::SetPointerPosition(_In_ CONST
> DXGKARG_SETPOINTERPOSITION* pSetPointerPosition)
> >  {
> >      PAGED_CODE();
> > @@ -465,6 +475,7 @@ NTSTATUS QxlDod::SetPointerPosition(_In_ CONST
> DXGKARG_SETPOINTERPOSITION* pSetP
> >
> >  // Basic Sample Display Driver does not support hardware cursors, and
> reports such
> >  // in QueryAdapterInfo. Therefore this function should never be called.
> > +QXL_PAGED
> >  NTSTATUS QxlDod::SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE*
> pSetPointerShape)
> >  {
> >      PAGED_CODE();
> > @@ -475,6 +486,7 @@ NTSTATUS QxlDod::SetPointerShape(_In_ CONST
> DXGKARG_SETPOINTERSHAPE* pSetPointer
> >      return m_pHWDevice->SetPointerShape(pSetPointerShape);
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::Escape(_In_ CONST DXGKARG_ESCAPE* pEscape)
> >  {
> >      PAGED_CODE();
> > @@ -488,7 +500,7 @@ NTSTATUS QxlDod::Escape(_In_ CONST DXGKARG_ESCAPE*
> pEscape)
> >      return Status;
> >  }
> >
> > -
> > +QXL_PAGED
> >  NTSTATUS QxlDod::PresentDisplayOnly(_In_ CONST
> DXGKARG_PRESENT_DISPLAYONLY* pPresentDisplayOnly)
> >  {
> >      PAGED_CODE();
> > @@ -550,6 +562,7 @@ NTSTATUS QxlDod::PresentDisplayOnly(_In_ CONST
> DXGKARG_PRESENT_DISPLAYONLY* pPre
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::QueryInterface(_In_ CONST PQUERY_INTERFACE
> pQueryInterface)
> >  {
> >      PAGED_CODE();
> > @@ -560,6 +573,7 @@ NTSTATUS QxlDod::QueryInterface(_In_ CONST
> PQUERY_INTERFACE pQueryInterface)
> >      return STATUS_NOT_SUPPORTED;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::StopDeviceAndReleasePostDisplayOwnership(_In_
> D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
> >                                                            _Out_
> DXGK_DISPLAY_INFORMATION*      pDisplayInfo)
> >  {
> > @@ -584,7 +598,7 @@ NTSTATUS QxlDod::StopDeviceAndReleasePostDisplayOwnership(_In_
> D3DDDI_VIDEO_PRE
> >      return StopDevice();
> >  }
> >
> > -
> > +QXL_PAGED
> >  NTSTATUS QxlDod::QueryVidPnHWCapability(_Inout_ DXGKARG_QUERYVIDPNHWCAPABILITY*
> pVidPnHWCaps)
> >  {
> >      PAGED_CODE();
> > @@ -608,6 +622,7 @@ NTSTATUS QxlDod::QueryVidPnHWCapability(_Inout_
> DXGKARG_QUERYVIDPNHWCAPABILITY*
> >
> >
> >  // TODO: Need to also check pinned modes and the path parameters, not
> just topology
> > +QXL_PAGED
> >  NTSTATUS QxlDod::IsSupportedVidPn(_Inout_ DXGKARG_ISSUPPORTEDVIDPN*
> pIsSupportedVidPn)
> >  {
> >      PAGED_CODE();
> > @@ -670,6 +685,7 @@ NTSTATUS QxlDod::IsSupportedVidPn(_Inout_
> DXGKARG_ISSUPPORTEDVIDPN* pIsSupported
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::RecommendFunctionalVidPn(_In_ CONST DXGKARG_RECOMMENDFUNCTIONALVIDPN*
> CONST pRecommendFunctionalVidPn)
> >  {
> >      PAGED_CODE();
> > @@ -680,6 +696,7 @@ NTSTATUS QxlDod::RecommendFunctionalVidPn(_In_
> CONST DXGKARG_RECOMMENDFUNCTIONAL
> >      return STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::RecommendVidPnTopology(_In_ CONST DXGKARG_RECOMMENDVIDPNTOPOLOGY*
> CONST pRecommendVidPnTopology)
> >  {
> >      PAGED_CODE();
> > @@ -690,6 +707,7 @@ NTSTATUS QxlDod::RecommendVidPnTopology(_In_ CONST
> DXGKARG_RECOMMENDVIDPNTOPOLOG
> >      return STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::RecommendMonitorModes(_In_ CONST
> DXGKARG_RECOMMENDMONITORMODES* CONST pRecommendMonitorModes)
> >  {
> >      PAGED_CODE();
> > @@ -698,7 +716,7 @@ NTSTATUS QxlDod::RecommendMonitorModes(_In_ CONST
> DXGKARG_RECOMMENDMONITORMODES*
> >      return AddSingleMonitorMode(pRecommendMonitorModes);
> >  }
> >
> > -
> > +QXL_PAGED
> >  NTSTATUS QxlDod::AddSingleSourceMode(_In_ CONST
> DXGK_VIDPNSOURCEMODESET_INTERFACE* pVidPnSourceModeSetInterface,
> >
>  D3DKMDT_HVIDPNSOURCEMODESET hVidPnSourceModeSet,
> >
>  D3DDDI_VIDEO_PRESENT_SOURCE_ID SourceId)
> > @@ -755,6 +773,7 @@ NTSTATUS QxlDod::AddSingleSourceMode(_In_ CONST
> DXGK_VIDPNSOURCEMODESET_INTERFAC
> >  }
> >
> >  // Add the current mode information (acquired from the POST frame
> buffer) as the target mode.
> > +QXL_PAGED
> >  NTSTATUS QxlDod::AddSingleTargetMode(_In_ CONST
> DXGK_VIDPNTARGETMODESET_INTERFACE* pVidPnTargetModeSetInterface,
> >
>  D3DKMDT_HVIDPNTARGETMODESET hVidPnTargetModeSet,
> >                                                     _In_opt_ CONST
> D3DKMDT_VIDPN_SOURCE_MODE* pVidPnPinnedSourceModeInfo,
> > @@ -807,7 +826,7 @@ NTSTATUS QxlDod::AddSingleTargetMode(_In_ CONST
> DXGK_VIDPNTARGETMODESET_INTERFAC
> >      return STATUS_SUCCESS;
> >  }
> >
> > -
> > +QXL_PAGED
> >  NTSTATUS QxlDod::AddSingleMonitorMode(_In_ CONST
> DXGKARG_RECOMMENDMONITORMODES* CONST pRecommendMonitorModes)
> >  {
> >      PAGED_CODE();
> > @@ -927,6 +946,7 @@ NTSTATUS QxlDod::AddSingleMonitorMode(_In_ CONST
> DXGKARG_RECOMMENDMONITORMODES*
> >  }
> >
> >  // Tell DMM about all the modes, etc. that are supported
> > +QXL_PAGED
> >  NTSTATUS QxlDod::EnumVidPnCofuncModality(_In_ CONST DXGKARG_ENUMVIDPNCOFUNCMODALITY*
> CONST pEnumCofuncModality)
> >  {
> >      PAGED_CODE();
> > @@ -1285,6 +1305,7 @@ NTSTATUS QxlDod::EnumVidPnCofuncModality(_In_
> CONST DXGKARG_ENUMVIDPNCOFUNCMODAL
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::SetVidPnSourceVisibility(_In_ CONST DXGKARG_SETVIDPNSOURCEVISIBILITY*
> pSetVidPnSourceVisibility)
> >  {
> >      PAGED_CODE();
> > @@ -1317,6 +1338,7 @@ NTSTATUS QxlDod::SetVidPnSourceVisibility(_In_
> CONST DXGKARG_SETVIDPNSOURCEVISIB
> >
> >  // NOTE: The value of pCommitVidPn->MonitorConnectivityChecks is
> ignored, since BDD is unable to recognize whether a monitor is connected or
> not
> >  // The value of pCommitVidPn->hPrimaryAllocation is also ignored,
> since BDD is a display only driver and does not deal with allocations
> > +QXL_PAGED
> >  NTSTATUS QxlDod::CommitVidPn(_In_ CONST DXGKARG_COMMITVIDPN* CONST
> pCommitVidPn)
> >  {
> >      PAGED_CODE();
> > @@ -1502,6 +1524,7 @@ CommitVidPnExit:
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::SetSourceModeAndPath(CONST D3DKMDT_VIDPN_SOURCE_MODE*
> pSourceMode,
> >                                                      CONST
> D3DKMDT_VIDPN_PRESENT_PATH* pPath)
> >  {
> > @@ -1548,6 +1571,7 @@ NTSTATUS QxlDod::SetSourceModeAndPath(CONST
> D3DKMDT_VIDPN_SOURCE_MODE* pSourceMo
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::IsVidPnPathFieldsValid(CONST
> D3DKMDT_VIDPN_PRESENT_PATH* pPath) const
> >  {
> >      PAGED_CODE();
> > @@ -1596,6 +1620,7 @@ NTSTATUS QxlDod::IsVidPnPathFieldsValid(CONST
> D3DKMDT_VIDPN_PRESENT_PATH* pPath)
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::IsVidPnSourceModeFieldsValid(CONST
> D3DKMDT_VIDPN_SOURCE_MODE* pSourceMode) const
> >  {
> >      PAGED_CODE();
> > @@ -1627,6 +1652,7 @@ NTSTATUS QxlDod::IsVidPnSourceModeFieldsValid(CONST
> D3DKMDT_VIDPN_SOURCE_MODE* p
> >      return STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::UpdateActiveVidPnPresentPath(_In_ CONST DXGKARG_UPDATEACTIVEVIDPNPRESENTPATH*
> CONST pUpdateActiveVidPnPresentPath)
> >  {
> >      PAGED_CODE();
> > @@ -1652,8 +1678,6 @@ NTSTATUS QxlDod::UpdateActiveVidPnPresentPath(_In_
> CONST DXGKARG_UPDATEACTIVEVID
> >  //
> >  // Non-Paged Code
> >  //
> > -#pragma code_seg(push)
> > -#pragma code_seg()
> >
> >  VOID QxlDod::DpcRoutine(VOID)
> >  {
> > @@ -1781,8 +1805,8 @@ VOID QxlDod::SystemDisplayWrite(_In_reads_bytes_(SourceHeight
> * SourceStride) VO
> >
> >  }
> >
> > -#pragma code_seg(pop) // End Non-Paged Code
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::WriteHWInfoStr(_In_ HANDLE DevInstRegKeyHandle, _In_
> PCWSTR pszwValueName, _In_ PCSTR pszValue)
> >  {
> >      PAGED_CODE();
> > @@ -1826,6 +1850,7 @@ NTSTATUS QxlDod::WriteHWInfoStr(_In_ HANDLE
> DevInstRegKeyHandle, _In_ PCWSTR psz
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::RegisterHWInfo(ULONG Id)
> >  {
> >      PAGED_CODE();
> > @@ -1905,6 +1930,7 @@ NTSTATUS QxlDod::RegisterHWInfo(ULONG Id)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDod::ReadConfiguration()
> >  {
> >      PAGED_CODE();
> > @@ -1959,8 +1985,6 @@ NTSTATUS QxlDod::ReadConfiguration()
> >  //
> >  // Non-Paged Code
> >  //
> > -#pragma code_seg(push)
> > -#pragma code_seg()
> >  D3DDDI_VIDEO_PRESENT_SOURCE_ID QxlDod::FindSourceForTarget(D3DDDI_VIDEO_PRESENT_TARGET_ID
> TargetId, BOOLEAN DefaultToZero)
> >  {
> >      UNREFERENCED_PARAMETER(TargetId);
> > @@ -1975,12 +1999,10 @@ D3DDDI_VIDEO_PRESENT_SOURCE_ID
> QxlDod::FindSourceForTarget(D3DDDI_VIDEO_PRESENT_
> >      return DefaultToZero ? 0 : D3DDDI_ID_UNINITIALIZED;
> >  }
> >
> > -#pragma code_seg(pop) // End Non-Paged Code
> > -
> >  //
> >  // Frame buffer map/unmap
> >  //
> > -
> > +QXL_PAGED
> >  NTSTATUS
> >  MapFrameBuffer(
> >      _In_                       PHYSICAL_ADDRESS    PhysicalAddress,
> > @@ -2022,6 +2044,7 @@ MapFrameBuffer(
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS
> >  UnmapFrameBuffer(
> >      _In_reads_bytes_(Length) VOID* VirtualAddress,
> > @@ -2324,6 +2347,7 @@ VOID BltBits (
> >      }
> >  }
> >
> > +QXL_PAGED
> >  VgaDevice::VgaDevice(_In_ QxlDod* pQxlDod)
> >  {
> >      PAGED_CODE();
> > @@ -2335,6 +2359,7 @@ VgaDevice::VgaDevice(_In_ QxlDod* pQxlDod)
> >      m_Id = 0;
> >  }
> >
> > +QXL_PAGED
> >  VgaDevice::~VgaDevice(void)
> >  {
> >      PAGED_CODE();
> > @@ -2348,6 +2373,7 @@ VgaDevice::~VgaDevice(void)
> >      m_Id = 0;
> >  }
> >
> > +QXL_PAGED
> >  BOOL VgaDevice::SetVideoModeInfo(UINT Idx, PVBE_MODEINFO pModeInfo)
> >  {
> >      PVIDEO_MODE_INFORMATION pMode = NULL;
> > @@ -2385,6 +2411,7 @@ BOOL VgaDevice::SetVideoModeInfo(UINT Idx,
> PVBE_MODEINFO pModeInfo)
> >      return TRUE;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS VgaDevice::GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo)
> >  {
> >      PAGED_CODE();
> > @@ -2576,6 +2603,7 @@ NTSTATUS VgaDevice::GetModeList(DXGK_DISPLAY_INFORMATION*
> pDispInfo)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS VgaDevice::QueryCurrentMode(PVIDEO_MODE RequestedMode)
> >  {
> >      PAGED_CODE();
> > @@ -2586,6 +2614,7 @@ NTSTATUS VgaDevice::QueryCurrentMode(PVIDEO_MODE
> RequestedMode)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS VgaDevice::SetCurrentMode(ULONG Mode)
> >  {
> >      PAGED_CODE();
> > @@ -2604,6 +2633,7 @@ NTSTATUS VgaDevice::SetCurrentMode(ULONG Mode)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS VgaDevice::GetCurrentMode(ULONG* pMode)
> >  {
> >      PAGED_CODE();
> > @@ -2622,6 +2652,7 @@ NTSTATUS VgaDevice::GetCurrentMode(ULONG* pMode)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS VgaDevice::HWInit(PCM_RESOURCE_LIST pResList,
> DXGK_DISPLAY_INFORMATION* pDispInfo)
> >  {
> >      PAGED_CODE();
> > @@ -2633,6 +2664,7 @@ NTSTATUS VgaDevice::HWInit(PCM_RESOURCE_LIST
> pResList, DXGK_DISPLAY_INFORMATION*
> >      return GetModeList(pDispInfo);
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS VgaDevice::HWClose(void)
> >  {
> >      PAGED_CODE();
> > @@ -2642,6 +2674,7 @@ NTSTATUS VgaDevice::HWClose(void)
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS VgaDevice::SetPowerState(_In_  DEVICE_POWER_STATE
> DevicePowerState, DXGK_DISPLAY_INFORMATION* pDispInfo)
> >  {
> >      PAGED_CODE();
> > @@ -2668,7 +2701,7 @@ NTSTATUS VgaDevice::SetPowerState(_In_
> DEVICE_POWER_STATE DevicePowerState, DXG
> >      return STATUS_SUCCESS;
> >  }
> >
> > -
> > +QXL_PAGED
> >  NTSTATUS
> >  VgaDevice::ExecutePresentDisplayOnly(
> >      _In_ BYTE*             DstAddr,
> > @@ -2870,6 +2903,7 @@ VgaDevice::ExecutePresentDisplayOnly(
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  VOID VgaDevice::BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod)
> >  {
> >      PAGED_CODE();
> > @@ -2953,6 +2987,7 @@ NTSTATUS VgaDevice::ReleaseFrameBuffer(CURRENT_BDD_MODE*
> pCurrentBddMode)
> >      return status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS  VgaDevice::SetPointerShape(_In_ CONST
> DXGKARG_SETPOINTERSHAPE* pSetPointerShape)
> >  {
> >      PAGED_CODE();
> > @@ -2960,6 +2995,7 @@ NTSTATUS  VgaDevice::SetPointerShape(_In_ CONST
> DXGKARG_SETPOINTERSHAPE* pSetPoi
> >      return STATUS_NOT_SUPPORTED;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS VgaDevice::SetPointerPosition(_In_ CONST
> DXGKARG_SETPOINTERPOSITION* pSetPointerPosition)
> >  {
> >      PAGED_CODE();
> > @@ -2967,6 +3003,7 @@ NTSTATUS VgaDevice::SetPointerPosition(_In_ CONST
> DXGKARG_SETPOINTERPOSITION* pS
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS VgaDevice::Escape(_In_ CONST DXGKARG_ESCAPE* pEscap)
> >  {
> >      PAGED_CODE();
> > @@ -2975,6 +3012,7 @@ NTSTATUS VgaDevice::Escape(_In_ CONST
> DXGKARG_ESCAPE* pEscap)
> >      return STATUS_NOT_IMPLEMENTED;
> >  }
> >
> > +QXL_PAGED
> >  QxlDevice::QxlDevice(_In_ QxlDod* pQxlDod)
> >  {
> >      PAGED_CODE();
> > @@ -2988,6 +3026,7 @@ QxlDevice::QxlDevice(_In_ QxlDod* pQxlDod)
> >      m_Pending = 0;
> >  }
> >
> > +QXL_PAGED
> >  QxlDevice::~QxlDevice(void)
> >  {
> >      PAGED_CODE();
> > @@ -3000,6 +3039,7 @@ QxlDevice::~QxlDevice(void)
> >      m_ModeCount = 0;
> >  }
> >
> > +QXL_PAGED
> >  BOOL QxlDevice::SetVideoModeInfo(UINT Idx, QXLMode* pModeInfo)
> >  {
> >      PVIDEO_MODE_INFORMATION pMode = NULL;
> > @@ -3033,6 +3073,7 @@ BOOL QxlDevice::SetVideoModeInfo(UINT Idx,
> QXLMode* pModeInfo)
> >      return TRUE;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::UpdateVideoModeInfo(UINT Idx, UINT xres, UINT yres,
> UINT bpp)
> >  {
> >      PVIDEO_MODE_INFORMATION pMode = NULL;
> > @@ -3055,6 +3096,7 @@ void QxlDevice::UpdateVideoModeInfo(UINT Idx,
> UINT xres, UINT yres, UINT bpp)
> >      pMode->RedMask = pMode->GreenMask << color_bits;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo)
> >  {
> >      PAGED_CODE();
> > @@ -3162,6 +3204,7 @@ NTSTATUS QxlDevice::GetModeList(DXGK_DISPLAY_INFORMATION*
> pDispInfo)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::QueryCurrentMode(PVIDEO_MODE RequestedMode)
> >  {
> >      PAGED_CODE();
> > @@ -3171,6 +3214,7 @@ NTSTATUS QxlDevice::QueryCurrentMode(PVIDEO_MODE
> RequestedMode)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::SetCurrentMode(ULONG Mode)
> >  {
> >      PAGED_CODE();
> > @@ -3191,6 +3235,7 @@ NTSTATUS QxlDevice::SetCurrentMode(ULONG Mode)
> >      return STATUS_UNSUCCESSFUL;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::GetCurrentMode(ULONG* pMode)
> >  {
> >      PAGED_CODE();
> > @@ -3201,6 +3246,7 @@ NTSTATUS QxlDevice::GetCurrentMode(ULONG* pMode)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::SetPowerState(_In_ DEVICE_POWER_STATE
> DevicePowerState, DXGK_DISPLAY_INFORMATION* pDispInfo)
> >  {
> >      PAGED_CODE();
> > @@ -3217,6 +3263,7 @@ NTSTATUS QxlDevice::SetPowerState(_In_
> DEVICE_POWER_STATE DevicePowerState, DXGK
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::HWInit(PCM_RESOURCE_LIST pResList,
> DXGK_DISPLAY_INFORMATION* pDispInfo)
> >  {
> >      PAGED_CODE();
> > @@ -3365,6 +3412,7 @@ NTSTATUS QxlDevice::HWInit(PCM_RESOURCE_LIST
> pResList, DXGK_DISPLAY_INFORMATION*
> >      return QxlInit(pDispInfo);
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::QxlInit(DXGK_DISPLAY_INFORMATION* pDispInfo)
> >  {
> >      PAGED_CODE();
> > @@ -3393,12 +3441,14 @@ NTSTATUS QxlDevice::QxlInit(DXGK_DISPLAY_INFORMATION*
> pDispInfo)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::QxlClose()
> >  {
> >      PAGED_CODE();
> >      DestroyMemSlots();
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::UnmapMemory(void)
> >  {
> >      PAGED_CODE();
> > @@ -3427,6 +3477,7 @@ void QxlDevice::UnmapMemory(void)
> >      }
> >  }
> >
> > +QXL_PAGED
> >  BOOL QxlDevice::InitMemSlots(void)
> >  {
> >      PAGED_CODE();
> > @@ -3447,6 +3498,7 @@ BOOL QxlDevice::InitMemSlots(void)
> >      return FALSE;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::DestroyMemSlots(void)
> >  {
> >      PAGED_CODE();
> > @@ -3456,6 +3508,7 @@ void QxlDevice::DestroyMemSlots(void)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::CreatePrimarySurface(PVIDEO_MODE_INFORMATION pModeInfo)
> >  {
> >      PAGED_CODE();
> > @@ -3479,6 +3532,7 @@ void QxlDevice::CreatePrimarySurface(PVIDEO_MODE_INFORMATION
> pModeInfo)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::DestroyPrimarySurface(void)
> >  {
> >      PAGED_CODE();
> > @@ -3488,6 +3542,7 @@ void QxlDevice::DestroyPrimarySurface(void)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  _inline QXLPHYSICAL QxlDevice::PA(PVOID virt, UINT8 slot_id)
> >  {
> >      PAGED_CODE();
> > @@ -3496,6 +3551,7 @@ _inline QXLPHYSICAL QxlDevice::PA(PVOID virt,
> UINT8 slot_id)
> >      return pSlot->high_bits | ((UINT64)virt - pSlot->start_virt_addr);
> >  }
> >
> > +QXL_PAGED
> >  _inline UINT64 QxlDevice::VA(QXLPHYSICAL paddr, UINT8 slot_id)
> >  {
> >      PAGED_CODE();
> > @@ -3509,6 +3565,7 @@ _inline UINT64 QxlDevice::VA(QXLPHYSICAL paddr,
> UINT8 slot_id)
> >      return virt;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::SetupHWSlot(UINT8 Idx, MemSlot *pSlot)
> >  {
> >      PAGED_CODE();
> > @@ -3519,6 +3576,7 @@ void QxlDevice::SetupHWSlot(UINT8 Idx, MemSlot
> *pSlot)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<---> %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  BOOL QxlDevice::CreateEvents()
> >  {
> >      PAGED_CODE();
> > @@ -3541,6 +3599,7 @@ BOOL QxlDevice::CreateEvents()
> >      return TRUE;
> >  }
> >
> > +QXL_PAGED
> >  BOOL QxlDevice::CreateRings()
> >  {
> >      PAGED_CODE();
> > @@ -3552,6 +3611,7 @@ BOOL QxlDevice::CreateRings()
> >      return TRUE;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::AsyncIo(UCHAR  Port, UCHAR Value)
> >  {
> >      PAGED_CODE();
> > @@ -3564,6 +3624,7 @@ void QxlDevice::AsyncIo(UCHAR  Port, UCHAR Value)
> >      ReleaseMutex(&m_IoLock, locked);
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::SyncIo(UCHAR  Port, UCHAR Value)
> >  {
> >      PAGED_CODE();
> > @@ -3573,6 +3634,7 @@ void QxlDevice::SyncIo(UCHAR  Port, UCHAR Value)
> >      ReleaseMutex(&m_IoLock, locked);
> >  }
> >
> > +QXL_PAGED
> >  UINT8 QxlDevice::SetupMemSlot(UINT8 Idx, UINT64 pastart, UINT64 paend,
> UINT64 vastart, UINT64 vaend)
> >  {
> >      PAGED_CODE();
> > @@ -3599,6 +3661,7 @@ UINT8 QxlDevice::SetupMemSlot(UINT8 Idx, UINT64
> pastart, UINT64 paend, UINT64 va
> >      return slot_index;
> >  }
> >
> > +QXL_PAGED
> >  BOOL QxlDevice::CreateMemSlots(void)
> >  {
> >      PAGED_CODE();
> > @@ -3619,6 +3682,7 @@ BOOL QxlDevice::CreateMemSlots(void)
> >      return TRUE;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::InitDeviceMemoryResources(void)
> >  {
> >      PAGED_CODE();
> > @@ -3628,6 +3692,7 @@ void QxlDevice::InitDeviceMemoryResources(void)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::InitMonitorConfig(void)
> >  {
> >      PAGED_CODE();
> > @@ -3639,6 +3704,7 @@ void QxlDevice::InitMonitorConfig(void)
> >      *m_monitor_config_pa = PA(m_monitor_config, m_MainMemSlot);
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::InitMspace(UINT32 mspace_type, UINT8 *start, size_t
> capacity)
> >  {
> >      PAGED_CODE();
> > @@ -3657,6 +3723,7 @@ void QxlDevice::ResetDevice(void)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS
> >  QxlDevice::ExecutePresentDisplayOnly(
> >      _In_ BYTE*             DstAddr,
> > @@ -3845,6 +3912,7 @@ QxlDevice::ExecutePresentDisplayOnly(
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::WaitForReleaseRing(void)
> >  {
> >      PAGED_CODE();
> > @@ -3878,6 +3946,7 @@ void QxlDevice::WaitForReleaseRing(void)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("%s: <---\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::FlushReleaseRing()
> >  {
> >      PAGED_CODE();
> > @@ -3910,6 +3979,7 @@ void QxlDevice::FlushReleaseRing()
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::EmptyReleaseRing()
> >  {
> >      PAGED_CODE();
> > @@ -3921,6 +3991,7 @@ void QxlDevice::EmptyReleaseRing()
> >      ReleaseMutex(&m_MemLock, locked);
> >  }
> >
> > +QXL_PAGED
> >  UINT64 QxlDevice::ReleaseOutput(UINT64 output_id)
> >  {
> >      PAGED_CODE();
> > @@ -3941,6 +4012,7 @@ UINT64 QxlDevice::ReleaseOutput(UINT64 output_id)
> >      return next;
> >  }
> >
> > +QXL_PAGED
> >  void *QxlDevice::AllocMem(UINT32 mspace_type, size_t size, BOOL force)
> >  {
> >      PAGED_CODE();
> > @@ -3990,6 +4062,7 @@ void *QxlDevice::AllocMem(UINT32 mspace_type,
> size_t size, BOOL force)
> >      return ptr;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::FreeMem(UINT32 mspace_type, void *ptr)
> >  {
> >      PAGED_CODE();
> > @@ -4011,6 +4084,7 @@ void QxlDevice::FreeMem(UINT32 mspace_type, void
> *ptr)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  QXLDrawable *QxlDevice::GetDrawable()
> >  {
> >      PAGED_CODE();
> > @@ -4024,6 +4098,7 @@ QXLDrawable *QxlDevice::GetDrawable()
> >      return(QXLDrawable *)output->data;
> >  }
> >
> > +QXL_PAGED
> >  QXLCursorCmd *QxlDevice::CursorCmd()
> >  {
> >      PAGED_CODE();
> > @@ -4040,6 +4115,7 @@ QXLCursorCmd *QxlDevice::CursorCmd()
> >      return cursor_cmd;
> >  }
> >
> > +QXL_PAGED
> >  BOOL QxlDevice::SetClip(const RECT *clip, QXLDrawable *drawable)
> >  {
> >      PAGED_CODE();
> > @@ -4070,6 +4146,7 @@ BOOL QxlDevice::SetClip(const RECT *clip,
> QXLDrawable *drawable)
> >      return TRUE;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::AddRes(QXLOutput *output, Resource *res)
> >  {
> >      PAGED_CODE();
> > @@ -4077,6 +4154,7 @@ void QxlDevice::AddRes(QXLOutput *output, Resource
> *res)
> >      output->resources[output->num_res++] = res;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::DrawableAddRes(QXLDrawable *drawable, Resource *res)
> >  {
> >      PAGED_CODE();
> > @@ -4086,6 +4164,7 @@ void QxlDevice::DrawableAddRes(QXLDrawable
> *drawable, Resource *res)
> >      AddRes(output, res);
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::CursorCmdAddRes(QXLCursorCmd *cmd, Resource *res)
> >  {
> >      PAGED_CODE();
> > @@ -4095,6 +4174,7 @@ void QxlDevice::CursorCmdAddRes(QXLCursorCmd
> *cmd, Resource *res)
> >      AddRes(output, res);
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::FreeClipRectsEx(Resource *res)
> >  {
> >      PAGED_CODE();
> > @@ -4103,6 +4183,7 @@ void QxlDevice::FreeClipRectsEx(Resource *res)
> >      pqxl->FreeClipRects(res);
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::FreeClipRects(Resource *res)
> >  {
> >      PAGED_CODE();
> > @@ -4119,6 +4200,7 @@ void QxlDevice::FreeClipRects(Resource *res)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::FreeBitmapImageEx(Resource *res)
> >  {
> >      PAGED_CODE();
> > @@ -4127,6 +4209,7 @@ void QxlDevice::FreeBitmapImageEx(Resource *res)
> >      pqxl->FreeBitmapImage(res);
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::FreeBitmapImage(Resource *res)
> >  {
> >      PAGED_CODE();
> > @@ -4147,6 +4230,7 @@ void QxlDevice::FreeBitmapImage(Resource *res)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::FreeCursorEx(Resource *res)
> >  {
> >      PAGED_CODE();
> > @@ -4155,6 +4239,7 @@ void QxlDevice::FreeCursorEx(Resource *res)
> >      pqxl->FreeCursor(res);
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::FreeCursor(Resource *res)
> >  {
> >      PAGED_CODE();
> > @@ -4172,6 +4257,7 @@ void QxlDevice::FreeCursor(Resource *res)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  QXLDrawable *QxlDevice::Drawable(UINT8 type, CONST RECT *area, CONST
> RECT *clip, UINT32 surface_id)
> >  {
> >      PAGED_CODE();
> > @@ -4200,6 +4286,7 @@ QXLDrawable *QxlDevice::Drawable(UINT8 type, CONST
> RECT *area, CONST RECT *clip,
> >      return drawable;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::PushDrawable(QXLDrawable *drawable) {
> >      PAGED_CODE();
> >      QXLCommand *cmd;
> > @@ -4216,6 +4303,7 @@ void QxlDevice::PushDrawable(QXLDrawable
> *drawable) {
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::PushCursorCmd(QXLCursorCmd *cursor_cmd)
> >  {
> >      PAGED_CODE();
> > @@ -4234,6 +4322,7 @@ void QxlDevice::PushCursorCmd(QXLCursorCmd
> *cursor_cmd)
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  VOID QxlDevice::SetImageId(InternalImage *internal,
> >      BOOL cache_me,
> >      LONG width,
> > @@ -4254,6 +4343,7 @@ VOID QxlDevice::SetImageId(InternalImage
> *internal,
> >      }
> >  }
> >
> > +QXL_PAGED
> >  VOID QxlDevice::BltBits (
> >      BLT_INFO* pDst,
> >      CONST BLT_INFO* pSrc,
> > @@ -4355,6 +4445,7 @@ VOID QxlDevice::BltBits (
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +    QXL_PAGED
> >  VOID QxlDevice::PutBytesAlign(QXLDataChunk **chunk_ptr, UINT8
> **now_ptr,
> >                              UINT8 **end_ptr, UINT8 *src, int size,
> >                              size_t alloc_size, uint32_t alignment)
> > @@ -4395,6 +4486,7 @@ VOID QxlDevice::PutBytesAlign(QXLDataChunk
> **chunk_ptr, UINT8 **now_ptr,
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  VOID QxlDevice::BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod)
> >  {
> >      QXLDrawable *drawable;
> > @@ -4422,6 +4514,7 @@ VOID QxlDevice::BlackOutScreen(CURRENT_BDD_MODE*
> pCurrentBddMod)
> >      }
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::HWClose(void)
> >  {
> >      PAGED_CODE();
> > @@ -4430,6 +4523,7 @@ NTSTATUS QxlDevice::HWClose(void)
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS  QxlDevice::SetPointerShape(_In_ CONST
> DXGKARG_SETPOINTERSHAPE* pSetPointerShape)
> >  {
> >      PAGED_CODE();
> > @@ -4514,6 +4608,7 @@ NTSTATUS  QxlDevice::SetPointerShape(_In_ CONST
> DXGKARG_SETPOINTERSHAPE* pSetPoi
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::SetPointerPosition(_In_ CONST
> DXGKARG_SETPOINTERPOSITION* pSetPointerPosition)
> >  {
> >      PAGED_CODE();
> > @@ -4538,6 +4633,7 @@ NTSTATUS QxlDevice::SetPointerPosition(_In_ CONST
> DXGKARG_SETPOINTERPOSITION* pS
> >      return STATUS_SUCCESS;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::UpdateChildStatus(BOOLEAN connect)
> >  {
> >      PAGED_CODE();
> > @@ -4552,6 +4648,7 @@ NTSTATUS QxlDevice::UpdateChildStatus(BOOLEAN
> connect)
> >      return Status;
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::SetCustomDisplay(QXLEscapeSetCustomDisplay*
> custom_display)
> >  {
> >      PAGED_CODE();
> > @@ -4576,6 +4673,7 @@ NTSTATUS QxlDevice::SetCustomDisplay(QXLEscapeSetCustomDisplay*
> custom_display)
> >      return status;
> >  }
> >
> > +QXL_PAGED
> >  void QxlDevice::SetMonitorConfig(QXLHead * monitor_config)
> >  {
> >      PAGED_CODE();
> > @@ -4592,6 +4690,7 @@ void QxlDevice::SetMonitorConfig(QXLHead *
> monitor_config)
> >      AsyncIo(QXL_IO_MONITORS_CONFIG_ASYNC, 0);
> >  }
> >
> > +QXL_PAGED
> >  NTSTATUS QxlDevice::Escape(_In_ CONST DXGKARG_ESCAPE* pEscape)
> >  {
> >      PAGED_CODE();
> > @@ -4633,6 +4732,7 @@ NTSTATUS QxlDevice::Escape(_In_ CONST
> DXGKARG_ESCAPE* pEscape)
> >      return status;
> >  }
> >
> > +QXL_PAGED
> >  VOID QxlDevice::WaitForCmdRing()
> >  {
> >      PAGED_CODE();
> > @@ -4650,6 +4750,7 @@ VOID QxlDevice::WaitForCmdRing()
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
> >  }
> >
> > +QXL_PAGED
> >  VOID QxlDevice::PushCmd()
> >  {
> >      PAGED_CODE();
> > @@ -4662,6 +4763,7 @@ VOID QxlDevice::PushCmd()
> >      DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s notify = %d\n",
> __FUNCTION__, notify));
> >  }
> >
> > +QXL_PAGED
> >  VOID QxlDevice::WaitForCursorRing(VOID)
> >  {
> >      PAGED_CODE();
> > @@ -4685,6 +4787,7 @@ VOID QxlDevice::WaitForCursorRing(VOID)
> >      }
> >  }
> >
> > +QXL_PAGED
> >  VOID QxlDevice::PushCursor(VOID)
> >  {
> >      PAGED_CODE();
> > @@ -4804,6 +4907,7 @@ D3DDDIFORMAT PixelFormatFromBPP(UINT BPP)
> >      }
> >  }
> >
> > +QXL_PAGED
> >  UINT SpiceFromPixelFormat(D3DDDIFORMAT Format)
> >  {
> >      PAGED_CODE();
> > diff --git a/qxldod/QxlDod.h b/qxldod/QxlDod.h
> > index c808eb1..ac33faa 100755
> > --- a/qxldod/QxlDod.h
> > +++ b/qxldod/QxlDod.h
> > @@ -4,6 +4,8 @@
> >  #include "qxl_windows.h"
> >  #include "mspace.h"
> >
> > +#define QXL_PAGED __declspec(code_seg("PAGE"))
> > +
> >  #define MAX_CHILDREN               1
> >  #define MAX_VIEWS                  1
> >  #define BITS_PER_BYTE              8
> > @@ -215,12 +217,19 @@ class QxlDod;
> >
> >  class HwDeviceInterface {
> >  public:
> > +    QXL_PAGED
> >      virtual ~HwDeviceInterface() {;}
> > +    QXL_PAGED
> >      virtual NTSTATUS QueryCurrentMode(PVIDEO_MODE RequestedMode) = 0;
> > +    QXL_PAGED
> >      virtual NTSTATUS SetCurrentMode(ULONG Mode) = 0;
> > +    QXL_PAGED
> >      virtual NTSTATUS GetCurrentMode(ULONG* Mode) = 0;
> > +    QXL_PAGED
> >      virtual NTSTATUS SetPowerState(DEVICE_POWER_STATE
> DevicePowerState, DXGK_DISPLAY_INFORMATION* pDispInfo) = 0;
> > +    QXL_PAGED
> >      virtual NTSTATUS HWInit(PCM_RESOURCE_LIST pResList,
> DXGK_DISPLAY_INFORMATION* pDispInfo) = 0;
> > +    QXL_PAGED
> >      virtual NTSTATUS HWClose(void) = 0;
> >      virtual BOOLEAN InterruptRoutine(_In_ PDXGKRNL_INTERFACE
> pDxgkInterface, _In_  ULONG MessageNumber) = 0;
> >      virtual VOID DpcRoutine(PVOID) = 0;
> > @@ -228,12 +237,19 @@ public:
> >      virtual NTSTATUS AcquireFrameBuffer(CURRENT_BDD_MODE*
> pCurrentBddMode) { return STATUS_SUCCESS; }
> >      virtual NTSTATUS ReleaseFrameBuffer(CURRENT_BDD_MODE*
> pCurrentBddMode) { return STATUS_SUCCESS; }
> >
> > +    QXL_PAGED
> >      virtual ULONG GetModeCount(void) = 0;
> > +    QXL_PAGED
> >      PVIDEO_MODE_INFORMATION GetModeInfo(UINT idx) {return
> &m_ModeInfo[idx];}
> > +    QXL_PAGED
> >      USHORT GetModeNumber(USHORT idx) {return m_ModeNumbers[idx];}
> > +    QXL_PAGED
> >      USHORT GetCurrentModeIndex(void) {return m_CurrentMode;}
> > +    QXL_PAGED
> >      VOID SetCurrentModeIndex(USHORT idx) {m_CurrentMode = idx;}
> > +    QXL_PAGED
> >      virtual BOOLEAN EnablePointer(void) = 0;
> > +    QXL_PAGED
> >      virtual NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE*
>  DstAddr,
> >                                   _In_ UINT              DstBitPerPixel,
> >                                   _In_ BYTE*             SrcAddr,
> > @@ -245,13 +261,17 @@ public:
> >                                   _In_ RECT*             pDirtyRect,
> >                                   _In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION
> Rotation,
> >                                   _In_ const CURRENT_BDD_MODE* pModeCur)
> = 0;
> > -
> > +    QXL_PAGED
> >      virtual VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod) = 0;
> > +    QXL_PAGED
> >      virtual NTSTATUS SetPointerShape(_In_ CONST
> DXGKARG_SETPOINTERSHAPE* pSetPointerShape) = 0;
> > +    QXL_PAGED
> >      virtual NTSTATUS SetPointerPosition(_In_ CONST
> DXGKARG_SETPOINTERPOSITION* pSetPointerPosition) = 0;
> > +    QXL_PAGED
> >      virtual NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap) = 0;
> >      ULONG GetId(void) { return m_Id; }
> >  protected:
> > +    QXL_PAGED
> >      virtual NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo)
> = 0;
> >  protected:
> >      QxlDod* m_pQxlDod;
> > @@ -267,16 +287,27 @@ class VgaDevice  :
> >      public HwDeviceInterface
> >  {
> >  public:
> > +    QXL_PAGED
> >      VgaDevice(_In_ QxlDod* pQxlDod);
> > +    QXL_PAGED
> >      ~VgaDevice(void);
> > +    QXL_PAGED
> >      NTSTATUS QueryCurrentMode(PVIDEO_MODE RequestedMode);
> > +    QXL_PAGED
> >      NTSTATUS SetCurrentMode(ULONG Mode);
> > +    QXL_PAGED
> >      NTSTATUS GetCurrentMode(ULONG* Mode);
> > +    QXL_PAGED
> >      ULONG GetModeCount(void) {return m_ModeCount;}
> > +    QXL_PAGED
> >      NTSTATUS SetPowerState(DEVICE_POWER_STATE DevicePowerState,
> DXGK_DISPLAY_INFORMATION* pDispInfo);
> > +    QXL_PAGED
> >      NTSTATUS HWInit(PCM_RESOURCE_LIST pResList,
> DXGK_DISPLAY_INFORMATION* pDispInfo);
> > +    QXL_PAGED
> >      NTSTATUS HWClose(void);
> > +    QXL_PAGED
> >      BOOLEAN EnablePointer(void) { return TRUE; }
> > +    QXL_PAGED
> >      NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE*             DstAddr,
> >                                   _In_ UINT              DstBitPerPixel,
> >                                   _In_ BYTE*             SrcAddr,
> > @@ -288,18 +319,24 @@ public:
> >                                   _In_ RECT*             pDirtyRect,
> >                                   _In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION
> Rotation,
> >                                   _In_ const CURRENT_BDD_MODE* pModeCur);
> > +    QXL_PAGED
> >      VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod);
> >      BOOLEAN InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface,
> _In_  ULONG MessageNumber);
> >      VOID DpcRoutine(PVOID);
> >      VOID ResetDevice(VOID);
> >      NTSTATUS AcquireFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode);
> >      NTSTATUS ReleaseFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode);
> > +    QXL_PAGED
> >      NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE*
> pSetPointerShape);
> > +    QXL_PAGED
> >      NTSTATUS SetPointerPosition(_In_ CONST DXGKARG_SETPOINTERPOSITION*
> pSetPointerPosition);
> > +    QXL_PAGED
> >      NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap);
> >  protected:
> > +    QXL_PAGED
> >      NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo);
> >  private:
> > +    QXL_PAGED
> >      BOOL SetVideoModeInfo(UINT Idx, PVBE_MODEINFO pModeInfo);
> >  };
> >
> > @@ -442,16 +479,27 @@ class QxlDevice  :
> >      public HwDeviceInterface
> >  {
> >  public:
> > +    QXL_PAGED
> >      QxlDevice(_In_ QxlDod* pQxlDod);
> > +    QXL_PAGED
> >      ~QxlDevice(void);
> > +    QXL_PAGED
> >      NTSTATUS QueryCurrentMode(PVIDEO_MODE RequestedMode);
> > +    QXL_PAGED
> >      NTSTATUS SetCurrentMode(ULONG Mode);
> > +    QXL_PAGED
> >      NTSTATUS GetCurrentMode(ULONG* Mode);
> > +    QXL_PAGED
> >      ULONG GetModeCount(void) {return m_ModeCount;}
> > +    QXL_PAGED
> >      NTSTATUS SetPowerState(DEVICE_POWER_STATE DevicePowerState,
> DXGK_DISPLAY_INFORMATION* pDispInfo);
> > +    QXL_PAGED
> >      NTSTATUS HWInit(PCM_RESOURCE_LIST pResList,
> DXGK_DISPLAY_INFORMATION* pDispInfo);
> > +    QXL_PAGED
> >      NTSTATUS HWClose(void);
> > +    QXL_PAGED
> >      BOOLEAN EnablePointer(void) { return FALSE; }
> > +    QXL_PAGED
> >      NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE*             DstAddr,
> >                      _In_ UINT              DstBitPerPixel,
> >                      _In_ BYTE*             SrcAddr,
> > @@ -463,83 +511,140 @@ public:
> >                      _In_ RECT*             pDirtyRect,
> >                      _In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation,
> >                      _In_ const CURRENT_BDD_MODE* pModeCur);
> > +    QXL_PAGED
> >      VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod);
> >      BOOLEAN InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface,
> _In_  ULONG MessageNumber);
> >      VOID DpcRoutine(PVOID);
> >      VOID ResetDevice(VOID);
> > +    QXL_PAGED
> >      NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE*
> pSetPointerShape);
> > +    QXL_PAGED
> >      NTSTATUS SetPointerPosition(_In_ CONST DXGKARG_SETPOINTERPOSITION*
> pSetPointerPosition);
> > +    QXL_PAGED
> >      NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap);
> >  protected:
> > +    QXL_PAGED
> >      NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo);
> > +    QXL_PAGED
> >      VOID BltBits (BLT_INFO* pDst,
> >                      CONST BLT_INFO* pSrc,
> >                      UINT  NumRects,
> >                      _In_reads_(NumRects) CONST RECT *pRects,
> >                      POINT*   pSourcePoint);
> > +    QXL_PAGED
> >      QXLDrawable *Drawable(UINT8 type,
> >                      CONST RECT *area,
> >                      CONST RECT *clip,
> >                      UINT32 surface_id);
> > +    QXL_PAGED
> >      void PushDrawable(QXLDrawable *drawable);
> > +    QXL_PAGED
> >      void PushCursorCmd(QXLCursorCmd *cursor_cmd);
> > +    QXL_PAGED
> >      QXLDrawable *GetDrawable();
> > +    QXL_PAGED
> >      QXLCursorCmd *CursorCmd();
> > +    QXL_PAGED
> >      void *AllocMem(UINT32 mspace_type, size_t size, BOOL force);
> >      VOID UpdateArea(CONST RECT* area, UINT32 surface_id);
> > +    QXL_PAGED
> >      VOID SetImageId(InternalImage *internal,
> >                      BOOL cache_me,
> >                      LONG width,
> >                      LONG height,
> >                      UINT8 format, UINT32 key);
> >  private:
> > +    QXL_PAGED
> >      NTSTATUS QxlInit(DXGK_DISPLAY_INFORMATION* pDispInfo);
> > +    QXL_PAGED
> >      void QxlClose(void);
> > +    QXL_PAGED
> >      void UnmapMemory(void);
> > +    QXL_PAGED
> >      BOOL SetVideoModeInfo(UINT Idx, QXLMode* pModeInfo);
> > +    QXL_PAGED
> >      void UpdateVideoModeInfo(UINT Idx, UINT xres, UINT yres, UINT bpp);
> > +    QXL_PAGED
> >      BOOL InitMemSlots(void);
> > +    QXL_PAGED
> >      BOOL CreateMemSlots(void);
> > +    QXL_PAGED
> >      void DestroyMemSlots(void);
> > +    QXL_PAGED
> >      void CreatePrimarySurface(PVIDEO_MODE_INFORMATION pModeInfo);
> > +    QXL_PAGED
> >      void DestroyPrimarySurface(void);
> > +    QXL_PAGED
> >      void SetupHWSlot(UINT8 Idx, MemSlot *pSlot);
> > +    QXL_PAGED
> >      UINT8 SetupMemSlot(UINT8 Idx, UINT64 pastart, UINT64 paend, UINT64
> vastart, UINT64 vaend);
> > +    QXL_PAGED
> >      BOOL CreateEvents(void);
> > +    QXL_PAGED
> >      BOOL CreateRings(void);
> > +    QXL_PAGED
> >      UINT64 VA(QXLPHYSICAL paddr, UINT8 slot_id);
> > +    QXL_PAGED
> >      QXLPHYSICAL PA(PVOID virt, UINT8 slot_id);
> > +    QXL_PAGED
> >      void InitDeviceMemoryResources(void);
> > +    QXL_PAGED
> >      void InitMonitorConfig();
> > +    QXL_PAGED
> >      void InitMspace(UINT32 mspace_type, UINT8 *start, size_t capacity);
> > +    QXL_PAGED
> >      void FlushReleaseRing();
> > +    QXL_PAGED
> >      void FreeMem(UINT32 mspace_type, void *ptr);
> > +    QXL_PAGED
> >      UINT64 ReleaseOutput(UINT64 output_id);
> > +    QXL_PAGED
> >      void WaitForReleaseRing(void);
> > +    QXL_PAGED
> >      void EmptyReleaseRing(void);
> > +    QXL_PAGED
> >      BOOL SetClip(const RECT *clip, QXLDrawable *drawable);
> > +    QXL_PAGED
> >      void AddRes(QXLOutput *output, Resource *res);
> > +    QXL_PAGED
> >      void DrawableAddRes(QXLDrawable *drawable, Resource *res);
> > +    QXL_PAGED
> >      void CursorCmdAddRes(QXLCursorCmd *cmd, Resource *res);
> > +    QXL_PAGED
> >      void FreeClipRects(Resource *res);
> > +    QXL_PAGED
> >      void static FreeClipRectsEx(Resource *res);
> > +    QXL_PAGED
> >      void FreeBitmapImage(Resource *res);
> > +    QXL_PAGED
> >      void static FreeBitmapImageEx(Resource *res);
> > +    QXL_PAGED
> >      void static FreeCursorEx(Resource *res);
> > +    QXL_PAGED
> >      void FreeCursor(Resource *res);
> > +    QXL_PAGED
> >      void WaitForCmdRing(void);
> > +    QXL_PAGED
> >      void PushCmd(void);
> > +    QXL_PAGED
> >      void WaitForCursorRing(void);
> > +    QXL_PAGED
> >      void PushCursor(void);
> > +    QXL_PAGED
> >      void PutBytesAlign(QXLDataChunk **chunk_ptr, UINT8 **now_ptr,
> >                              UINT8 **end_ptr, UINT8 *src, int size,
> >                              size_t alloc_size, uint32_t alignment);
> >      BOOLEAN static DpcCallbackEx(PVOID);
> >      void DpcCallback(PDPC_CB_CONTEXT);
> > +    QXL_PAGED
> >      void AsyncIo(UCHAR  Port, UCHAR Value);
> > +    QXL_PAGED
> >      void SyncIo(UCHAR  Port, UCHAR Value);
> > +    QXL_PAGED
> >      NTSTATUS UpdateChildStatus(BOOLEAN connect);
> > +    QXL_PAGED
> >      NTSTATUS SetCustomDisplay(QXLEscapeSetCustomDisplay*
> custom_display);
> > +    QXL_PAGED
> >      void SetMonitorConfig(QXLHead* monitor_config);
> >
> >  private:
> > @@ -610,37 +715,41 @@ private:
> >      DWORD m_VgaCompatible;
> >      DWORD m_PointerCaps;
> >  public:
> > +    QXL_PAGED
> >      QxlDod(_In_ DEVICE_OBJECT* pPhysicalDeviceObject);
> > +    QXL_PAGED
> >      ~QxlDod(void);
> > -#pragma code_seg(push)
> > -#pragma code_seg()
> >      BOOLEAN IsDriverActive() const
> >      {
> >          return m_Flags.DriverStarted;
> >      }
> > -#pragma code_seg(pop)
> > -
> > +    QXL_PAGED
> >      NTSTATUS StartDevice(_In_  DXGK_START_INFO*   pDxgkStartInfo,
> >                           _In_  DXGKRNL_INTERFACE* pDxgkInterface,
> >                           _Out_ ULONG*             pNumberOfViews,
> >                           _Out_ ULONG*             pNumberOfChildren);
> > +    QXL_PAGED
> >      NTSTATUS StopDevice(VOID);
> >      // Must be Non-Paged
> >      VOID ResetDevice(VOID);
> >
> > +    QXL_PAGED
> >      NTSTATUS DispatchIoRequest(_In_  ULONG VidPnSourceId,
> >                                 _In_  VIDEO_REQUEST_PACKET*
> pVideoRequestPacket);
> > +    QXL_PAGED
> >      NTSTATUS SetPowerState(_In_  ULONG HardwareUid,
> >                                 _In_  DEVICE_POWER_STATE
> DevicePowerState,
> >                                 _In_  POWER_ACTION       ActionType);
> >      // Report back child capabilities
> > +    QXL_PAGED
> >      NTSTATUS QueryChildRelations(_Out_writes_bytes_(ChildRelationsSize)
> DXGK_CHILD_DESCRIPTOR* pChildRelations,
> >                                   _In_
>  ULONG                  ChildRelationsSize);
> > -
> > +    QXL_PAGED
> >      NTSTATUS QueryChildStatus(_Inout_ DXGK_CHILD_STATUS* pChildStatus,
> >                                _In_    BOOLEAN
> NonDestructiveOnly);
> >
> >      // Return EDID if previously retrieved
> > +    QXL_PAGED
> >      NTSTATUS QueryDeviceDescriptor(_In_    ULONG
>  ChildUid,
> >                                     _Inout_ DXGK_DEVICE_DESCRIPTOR*
> pDeviceDescriptor);
> >
> > @@ -651,37 +760,53 @@ public:
> >      VOID DpcRoutine(VOID);
> >
> >      // Return DriverCaps, doesn't support other queries though
> > +    QXL_PAGED
> >      NTSTATUS QueryAdapterInfo(_In_ CONST DXGKARG_QUERYADAPTERINFO*
> pQueryAdapterInfo);
> >
> > +    QXL_PAGED
> >      NTSTATUS SetPointerPosition(_In_ CONST DXGKARG_SETPOINTERPOSITION*
> pSetPointerPosition);
> >
> > +    QXL_PAGED
> >      NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE*
> pSetPointerShape);
> >
> > +    QXL_PAGED
> >      NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscape);
> >
> > +    QXL_PAGED
> >      NTSTATUS PresentDisplayOnly(_In_ CONST DXGKARG_PRESENT_DISPLAYONLY*
> pPresentDisplayOnly);
> >
> > +    QXL_PAGED
> >      NTSTATUS QueryInterface(_In_ CONST PQUERY_INTERFACE
>  QueryInterface);
> >
> > +    QXL_PAGED
> >      NTSTATUS IsSupportedVidPn(_Inout_ DXGKARG_ISSUPPORTEDVIDPN*
> pIsSupportedVidPn);
> >
> > +    QXL_PAGED
> >      NTSTATUS RecommendFunctionalVidPn(_In_ CONST DXGKARG_RECOMMENDFUNCTIONALVIDPN*
> CONST pRecommendFunctionalVidPn);
> >
> > +    QXL_PAGED
> >      NTSTATUS RecommendVidPnTopology(_In_ CONST DXGKARG_RECOMMENDVIDPNTOPOLOGY*
> CONST pRecommendVidPnTopology);
> >
> > +    QXL_PAGED
> >      NTSTATUS RecommendMonitorModes(_In_ CONST
> DXGKARG_RECOMMENDMONITORMODES* CONST pRecommendMonitorModes);
> >
> > +    QXL_PAGED
> >      NTSTATUS EnumVidPnCofuncModality(_In_ CONST DXGKARG_ENUMVIDPNCOFUNCMODALITY*
> CONST pEnumCofuncModality);
> >
> > +    QXL_PAGED
> >      NTSTATUS SetVidPnSourceVisibility(_In_ CONST DXGKARG_SETVIDPNSOURCEVISIBILITY*
> pSetVidPnSourceVisibility);
> >
> > +    QXL_PAGED
> >      NTSTATUS CommitVidPn(_In_ CONST DXGKARG_COMMITVIDPN* CONST
> pCommitVidPn);
> >
> > +    QXL_PAGED
> >      NTSTATUS UpdateActiveVidPnPresentPath(_In_ CONST DXGKARG_UPDATEACTIVEVIDPNPRESENTPATH*
> CONST pUpdateActiveVidPnPresentPath);
> >
> > +    QXL_PAGED
> >      NTSTATUS QueryVidPnHWCapability(_Inout_ DXGKARG_QUERYVIDPNHWCAPABILITY*
> pVidPnHWCaps);
> >
> >      // Part of PnPStop (PnP instance only), returns current mode
> information (which will be passed to fallback instance by dxgkrnl)
> > +    QXL_PAGED
> >      NTSTATUS StopDeviceAndReleasePostDisplayOwnership(_In_
> D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
> >                                                        _Out_
> DXGK_DISPLAY_INFORMATION*      pDisplayInfo);
> >
> > @@ -703,39 +828,52 @@ public:
> >                                   _In_
>    INT   PositionY);
> >      PDXGKRNL_INTERFACE GetDxgkInterface(void) { return
> &m_DxgkInterface;}
> >  private:
> > +    QXL_PAGED
> >      VOID CleanUp(VOID);
> > +    QXL_PAGED
> >      NTSTATUS CheckHardware();
> > +    QXL_PAGED
> >      NTSTATUS WriteHWInfoStr(_In_ HANDLE DevInstRegKeyHandle, _In_
> PCWSTR pszwValueName, _In_ PCSTR pszValue);
> >      // Set the given source mode on the given path
> > +    QXL_PAGED
> >      NTSTATUS SetSourceModeAndPath(CONST D3DKMDT_VIDPN_SOURCE_MODE*
> pSourceMode,
> >                                    CONST D3DKMDT_VIDPN_PRESENT_PATH*
> pPath);
> >
> >      // Add the current mode to the given monitor source mode set
> > +    QXL_PAGED
> >      NTSTATUS AddSingleMonitorMode(_In_ CONST
> DXGKARG_RECOMMENDMONITORMODES* CONST pRecommendMonitorModes);
> >
> >      // Add the current mode to the given VidPn source mode set
> > +    QXL_PAGED
> >      NTSTATUS AddSingleSourceMode(_In_ CONST DXGK_VIDPNSOURCEMODESET_INTERFACE*
> pVidPnSourceModeSetInterface,
> >                                   D3DKMDT_HVIDPNSOURCEMODESET
> hVidPnSourceModeSet,
> >                                   D3DDDI_VIDEO_PRESENT_SOURCE_ID
> SourceId);
> >
> >      // Add the current mode (or the matching to pinned source mode) to
> the give VidPn target mode set
> > +    QXL_PAGED
> >      NTSTATUS AddSingleTargetMode(_In_ CONST DXGK_VIDPNTARGETMODESET_INTERFACE*
> pVidPnTargetModeSetInterface,
> >                                   D3DKMDT_HVIDPNTARGETMODESET
> hVidPnTargetModeSet,
> >                                   _In_opt_ CONST
> D3DKMDT_VIDPN_SOURCE_MODE* pVidPnPinnedSourceModeInfo,
> >                                   D3DDDI_VIDEO_PRESENT_SOURCE_ID
> SourceId);
> >      D3DDDI_VIDEO_PRESENT_SOURCE_ID FindSourceForTarget(D3DDDI_VIDEO_PRESENT_TARGET_ID
> TargetId, BOOLEAN DefaultToZero);
> > +    QXL_PAGED
> >      NTSTATUS IsVidPnSourceModeFieldsValid(CONST
> D3DKMDT_VIDPN_SOURCE_MODE* pSourceMode) const;
> > +    QXL_PAGED
> >      NTSTATUS IsVidPnPathFieldsValid(CONST D3DKMDT_VIDPN_PRESENT_PATH*
> pPath) const;
> > +    QXL_PAGED
> >      NTSTATUS RegisterHWInfo(_In_ ULONG Id);
> > +    QXL_PAGED
> >      NTSTATUS ReadConfiguration();
> >  };
> >
> > +QXL_PAGED
> >  NTSTATUS
> >  MapFrameBuffer(
> >      _In_                PHYSICAL_ADDRESS    PhysicalAddress,
> >      _In_                ULONG               Length,
> >      _Outptr_result_bytebuffer_(Length) VOID**
> VirtualAddress);
> >
> > +QXL_PAGED
> >  NTSTATUS
> >  UnmapFrameBuffer(
> >      _In_reads_bytes_(Length) VOID* VirtualAddress,
> > @@ -743,6 +881,7 @@ UnmapFrameBuffer(
> >
> >  UINT BPPFromPixelFormat(D3DDDIFORMAT Format);
> >  D3DDDIFORMAT PixelFormatFromBPP(UINT BPP);
> > +QXL_PAGED
> >  UINT SpiceFromPixelFormat(D3DDDIFORMAT Format);
> >
> >  VOID CopyBitsGeneric(
> > --
> > 2.7.4
> >
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/spice-devel
>



-- 
Respectfully,
*Sameeh Jubran*
*Linkedin <https://il.linkedin.com/pub/sameeh-jubran/87/747/a8a>*
*Junior Software Engineer @ Daynix <http://www.daynix.com>.*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20160928/91b97e59/attachment-0001.html>


More information about the Spice-devel mailing list