获取显卡名称、显存大小 代码

获取显卡容量代码
#include <Windows.h>
#include <string.h>
#include <dxgi.h>
#include <assert.h>

void EnumerateUsingDXGI( IDXGIFactory* pDXGIFactory )
{
    assert( pDXGIFactory != 0 );

    for( UINT index = 0; ; ++index )
    {
        IDXGIAdapter* pAdapter = nullptr;
        HRESULT hr = pDXGIFactory->EnumAdapters( index, &pAdapter );
        if( FAILED( hr ) ) // DXGIERR_NOT_FOUND is expected when the end of the list is hit
            break;

        DXGI_ADAPTER_DESC desc;
        memset( &desc, 0, sizeof( DXGI_ADAPTER_DESC ) );
        if( SUCCEEDED( pAdapter->GetDesc( &desc ) ) )
        {
            wprintf( L"Adapter: [%u] %s\n", index, desc.Description );

            for( UINT iOutput = 0; ; ++iOutput )
            {
                IDXGIOutput* pOutput = nullptr;
                hr = pAdapter->EnumOutputs( iOutput, &pOutput );
                if( FAILED( hr ) ) // DXGIERR_NOT_FOUND is expected when the end of the list is hit
                    break;

                DXGI_OUTPUT_DESC outputDesc;
                memset( &outputDesc, 0, sizeof( DXGI_OUTPUT_DESC ) );
                if( SUCCEEDED( pOutput->GetDesc( &outputDesc ) ) )
                {
                    //wprintf( L"hMonitor: 0x%0.8Ix\n", ( DWORD_PTR )outputDesc.Monitor );
                    //wprintf( L"hMonitor Device Name: %s\n", outputDesc.DeviceName );
                }

				pOutput->Release();
            }

            printf("Dedicated Video Memory: %Iu MB\n"
				"Dedicated System Memory: %Iu MB\n"
				"Shared System Memory: %Iu MB\n",
                desc.DedicatedVideoMemory / 1024 / 1024, /*desc.DedicatedVideoMemory,*/
                desc.DedicatedSystemMemory / 1024 / 1024, /*desc.DedicatedSystemMemory,*/
                desc.SharedSystemMemory / 1024 / 1024/*, desc.SharedSystemMemory */);
        }

		pAdapter->Release();
    }
}

int main(int argc, char* argv[])
{
	    HINSTANCE hDXGI = LoadLibrary( L"dxgi.dll" );

		typedef HRESULT ( WINAPI* LPCREATEDXGIFACTORY )( REFIID, void** );

        LPCREATEDXGIFACTORY pCreateDXGIFactory = nullptr;
        IDXGIFactory* pDXGIFactory = nullptr;

        // We prefer the use of DXGI 1.1
        pCreateDXGIFactory = ( LPCREATEDXGIFACTORY )GetProcAddress( hDXGI, "CreateDXGIFactory1" );

        if ( !pCreateDXGIFactory )
        {
            pCreateDXGIFactory = ( LPCREATEDXGIFACTORY )GetProcAddress( hDXGI, "CreateDXGIFactory" );

            if ( !pCreateDXGIFactory )
            {
                FreeLibrary( hDXGI );
                wprintf( L"ERROR: dxgi.dll missing entry-point\n" );
                return -1;
            }
        }
        
        HRESULT hr = pCreateDXGIFactory( __uuidof( IDXGIFactory ), ( LPVOID* )&pDXGIFactory );

        if ( SUCCEEDED(hr) )
        {
            EnumerateUsingDXGI( pDXGIFactory );

			pDXGIFactory->Release();

            return 0;
        }
        FreeLibrary( hDXGI );
	return 0;
}



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值