🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

D3DKMTQueryAdapterInfo AdapterPerfData noMemory Error

Started by
0 comments, last by Leonam 4 years, 11 months ago

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?

Just a programer.

This topic is closed to new replies.

Advertisement