I tried to get the Q3DKMT_ADAPTER_PERFDATA and I used this code.
string name = @"\\?\PCI#VEN_10DE&DEV_13B1&SUBSYS_80D5103C&REV_A2#4&245367a2&0&0008#{1CA05180-A699-450A-9A0C-DE4FBE3DDD89}";
D3DKMT_OPENADAPTERFROMDEVICENAME adapter = new D3DKMT_OPENADAPTERFROMDEVICENAME();
adapter.pDeviceName = name;
NTResult result = D3DKMT.D3DKMTOpenAdapterFromDeviceName(ref adapter);
if (result == NTResult.Success)
{
D3DKMT_ADAPTER_PERFDATA adapterPerfData = new D3DKMT_ADAPTER_PERFDATA();
IntPtr adapterPerfDataPtr = Marshal.AllocHGlobal(Marshal.SizeOf(adapterPerfData));
D3DKMT_QUERYADAPTERINFO queryAdapterInfo = new D3DKMT_QUERYADAPTERINFO();
queryAdapterInfo.hAdapter = adapter.hAdapter;
queryAdapterInfo.Type = KMTQUERYADAPTERINFOTYPE.ADAPTERPERFDATA;
queryAdapterInfo.pPrivateDriverData = adapterPerfDataPtr;
queryAdapterInfo.PrivateDriverDataSize = Marshal.SizeOf(typeof(D3DKMT_QUERYADAPTERINFO));
result = D3DKMT.D3DKMTQueryAdapterInfo(ref queryAdapterInfo);
if (result == NTResult.Success)
{
adapterPerfData = Marshal.PtrToStructure<D3DKMT_ADAPTER_PERFDATA>(adapterPerfDataPtr);
}
}
But I receive always 'noMemory'. How I can do to receive success?