I would like to ask if anyone has noticed this issue, started this July on some Windows machines.
The using of "EnumDisplayDevices" either Ansi or Unicode versions :
Example code : https://stackoverflow.com/questions/9524309/enumdisplaydevices-function-not-working-for-me
Code:
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")
void DumpDevice(const DISPLAY_DEVICE& dd, size_t nSpaceCount )
{
printf("%*sDevice Name: %s\n", nSpaceCount, "", dd.DeviceName );
printf("%*sDevice String: %s\n", nSpaceCount, "", dd.DeviceString );
printf("%*sState Flags: %x\n", nSpaceCount, "", dd.StateFlags );
printf("%*sDeviceID: %s\n", nSpaceCount, "", dd.DeviceID );
printf("%*sDeviceKey: ...%s\n\n", nSpaceCount, "", dd.DeviceKey+42 );
}
int main()
{
DISPLAY_DEVICE dd;
dd.cb = sizeof(DISPLAY_DEVICE);
DWORD deviceNum = 0;
while( EnumDisplayDevices(NULL, deviceNum, &dd, 0) ){
DumpDevice( dd, 0 );
DISPLAY_DEVICE newdd = {0};
newdd.cb = sizeof(DISPLAY_DEVICE);
DWORD monitorNum = 0;
while ( EnumDisplayDevices(dd.DeviceName, monitorNum, &newdd, 0))
{
DumpDevice( newdd, 4 );
monitorNum++;
}
puts("");
deviceNum++;
}
return 0;
}
The problems seems to be related to the drivers or some other recent Windows update, The value of "dd.DeviceString"
will have a random suffix : "NVIDIA GeForce GTX 1060 6GB#0x1e00303a45ed6a6a#"
The expected value is "NVIDIA GeForce GTX 1060 6GB" but it adds this "#0x1e00303a45ed6a6a#" value
which seems to be a formatted memory address or something else, anyway it is not supposed to be there and it is definitely not
related to forgetting to Zero-fill the buffer before calling the API.
This value seems to be added in registry too after a fresh driver install and a Windows reboot.
Anyone noticed this weird issue lately with nVidia or AMD ?