Community
cancel
Showing results for 
Search instead for 
Did you mean: 
vincentr
Beginner
225 Views

Accessing HDMI Infoframes

I have an existing application that accesses HDMI infoframe from an Intel G45/Cantiga chipset. The application was created by a contractor before my involvement. The contractor is no where to be found and I need to make some changes. I'm able to build the application yet my version doesn't function propertly. I'm looking for documentation/support so I can debug the failures.
0 Kudos
8 Replies
225 Views

What kind of failures are you seeing? Do you know which API you are using to get the info you are looking for?

Cheers,
-Ganesh
vincentr
Beginner
225 Views

I'm having trouble with EnumAttachableDevices returning expected values for the external HDMI display. I see the IGFX_ExternalFP (0x3)dwDeviceType, but status is IGFX_DISPLAY_DEVICE_NOATTACHED (0x1). The uidMonitor is always zero as well. As a result we end up with a failed _GetDisplayDevices().

Thanks,
Vincent

#define IGFX_NULL_DEVICE 0x0000
#define IGFX_CRT 0x0001
#define IGFX_LocalFP 0x0002
#define IGFX_ExternalFP 0x0003
#define IGFX_TV 0x0004

// Definition of pdwStatus DWORD flag used in EnumAttachableDevices method
#define IGFX_DISPLAY_DEVICE_NOTATTACHED 0x001 // No display device currently attached
#define IGFX_DISPLAY_DEVICE_ATTACHED 0x002 // Attached
#define IGFX_DISPLAY_DEVICE_OVERRIDE 0x004 // Policy indicates Unattached devicewill be treated as Attached #define IGFX_DISPLAY_DEVICE_ACTIVE 0x010 // Active device
#define IGFX_DISPLAY_DEVICE_PRIMARY 0x100 // Primary Display Device
#define IGFX_DISPLAY_DEVICE_SECONDARY 0x200 // secondary Display Device

DISPLAY_DEVICE display;
DWORD dwStatus;
bool bResult;
DWORD uidMonitor;
DWORD dwDeviceType;

void CInfoFrameGen::_GetDisplayDevice()
{
bTVDetected = false;
for (int iIndex=0;iIndex,4;iIndex++)
{
bResult = EnumDisplayDevices(NULL, 0, &display, 0);
hr = pCUIExternal->EnumAttachableDevices(display.DeviceName, iIndex, &uidMonitor, &dwDeviceType, &dwStatus);
if (hr != S_OK)
{
return;
}
if ((dwDeviceType==IGFX_ExternalFP) && (IGFX_DISPLAY_DEVICE_NOTATTACHED != dwStatus))
{
bTVDetected = true;
break;
}
}
}

vincentr
Beginner
225 Views

Here are the results of EnumAttachableDevices:

EnumAttachableDevices() hr:0x0 DeviceName:\\.\DISPLAY1 iIndex:0 uidMonitor:1 dwDeviceType:1 dwStatus:274

EnumAttachableDevices() hr:0x0 DeviceName:\\.\DISPLAY1 iIndex:1 uidMonitor:256 dwDeviceType:5 dwStatus:274

EnumAttachableDevices() hr:0x0 DeviceName:\\.\DISPLAY1 iIndex:2 uidMonitor:0 dwDeviceType:2 dwStatus:1

EnumAttachableDevices() hr:0x0 DeviceName:\\.\DISPLAY1 iIndex:3 uidMonitor:0 dwDeviceType:3 dwStatus:1

EnumAttachableDevices() hr:0x0 DeviceName:\\.\DISPLAY1 iIndex:4 uidMonitor:0 dwDeviceType:4 dwStatus:1

vincentr
Beginner
225 Views

Ganesh,

I've added more details to the thread. Thanks in advance for your help.
Philip_T_Intel1
Employee
225 Views

Are you using driver build 1382 ?

do the release notes here
http://driveragent.com/0/archive/12e01558/image/1-0-2/Intel--G35-Express-Chipset-Family

indicate a problem similar to yours was addressed in that build?
Philip_T_Intel1
Employee
225 Views

the docs indicate

Before calling EnumDisplayDevices, you must initialize the cb member of DISPLAY_DEVICE to the size, in bytes, of DISPLAY_DEVICE.

have you tried that?

why do you pass in 0 as the iDevNum for EnumDisplayDevices? that means you only see device 0 if more than 1 monitor is attached.
vincentr
Beginner
225 Views

The main problem is that I've inherited this code and don't have any documentation for the driver API calls. For the Windows EnumDisplayDevices call the codedoes set cb. It appears that all that is needed is the display.DeviceName for use in the EnumAttachableDevices call. The EnumDisplayDevicesshould be outside of the for loop.

From what I understand I need the CUI SDK for the drive API calls such as EnumAttachableDevices. I'm trying to locate the SDK.I've contacted authorized distributors but amawaiting a reply.

Please confirm if the CUI SDK is what I need.

Thanks

Philip_T_Intel1
Employee
225 Views

I am not familiar with the CUI SDK, therefore I cannot verify it is required for your purpose.

However, the MSDN code I find uses EnumDisplayDevices in a different way. See
http://msdn.microsoft.com/en-us/library/dd144942(VS.85).aspx

There, the API is called twice, once to retreive the adapter name, and a second time for the monitor for the device.

It might be worth executing this other code, to see if it returns more expected values in your situation.

WRT CUI SDK, some one else from Intel will have to speak up as dont know how to get access to it.

Reply