Here is the patch for Merge Request 3 (MR!3). The WebIDE must have changed
the end-of-line sequence as I produced this with "git diff
--ignore-all-space".
- jss
diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp
index 5fa9c9a..e73a4f9 100755
--- a/qxldod/QxlDod.cpp
+++ b/qxldod/QxlDod.cpp
@@ -189,7 +189,7 @@ NTSTATUS QxlDod::StartDevice(_In_ DXGK_START_INFO* pDxgkStartInfo,
return Status;
}
- Status = RegisterHWInfo(m_pHWDevice->GetId());
+ Status = RegisterHWInfo(m_pHWDevice->GetId(), m_DeviceInfo.SystemMemorySize);
if (!NT_SUCCESS(Status))
{
QXL_LOG_ASSERTION1("RegisterHWInfo failed with status 0x%X\n",
@@ -1920,7 +1920,7 @@ NTSTATUS QxlDod::WriteHWInfoStr(_In_ HANDLE DevInstRegKeyHandle, _In_ PCWSTR psz
return Status;
}
-NTSTATUS QxlDod::RegisterHWInfo(_In_ ULONG Id)
+NTSTATUS QxlDod::RegisterHWInfo(_In_ ULONG Id, _In_ LARGE_INTEGER MemSize)
{
PAGED_CODE();
@@ -1965,9 +1965,17 @@ NTSTATUS QxlDod::RegisterHWInfo(_In_ ULONG Id)
}
// MemorySize is a ULONG, unlike the others which are all strings
+ //
+ // Microsoft documents the value as counting megabytes, but observation
+ // suggests it counts bytes. For instance, to represent 512MB, set the
+ // value to 0x20000000, not to 0x0200.
+ //
+ // A robust implementation would check that the size in bytes, given as
+ // 64 bits, is not too big for representation as a DWORD!
+
UNICODE_STRING ValueNameMemorySize;
RtlInitUnicodeString(&ValueNameMemorySize, L"HardwareInformation.MemorySize");
- DWORD MemorySize = 0; // BDD has no access to video memory
+ DWORD MemorySize = MemSize.LowPart;
Status = ZwSetValueKey(DevInstRegKeyHandle,
&ValueNameMemorySize,
0,
diff --git a/qxldod/QxlDod.h b/qxldod/QxlDod.h
index 695b83a..dc3c9fc 100755
--- a/qxldod/QxlDod.h
+++ b/qxldod/QxlDod.h
@@ -837,7 +837,7 @@ private:
QXL_NON_PAGED D3DDDI_VIDEO_PRESENT_SOURCE_ID FindSourceForTarget(D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId, BOOLEAN DefaultToZero);
NTSTATUS IsVidPnSourceModeFieldsValid(CONST D3DKMDT_VIDPN_SOURCE_MODE* pSourceMode) const;
NTSTATUS IsVidPnPathFieldsValid(CONST D3DKMDT_VIDPN_PRESENT_PATH* pPath) const;
- NTSTATUS RegisterHWInfo(_In_ ULONG Id);
+ NTSTATUS RegisterHWInfo(_In_ ULONG Id, _In_ LARGE_INTEGER MemSize);
QXL_NON_PAGED VOID VsyncTimerProc();
static QXL_NON_PAGED VOID VsyncTimerProcGate(_In_ _KDPC *dpc, _In_ PVOID context, _In_ PVOID arg1, _In_ PVOID arg2);
QXL_NON_PAGED VOID IndicateVSyncInterrupt();
_______________________________________________
Spice-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/spice-devel