调用CreateDXGIFactory1时E_NOINTERFACE

时间:2013-07-25 01:30:38

标签: c++ windows runtime hresult dxgi

我对C ++一般都比较新,而且非常是Windows开发的新手。

我正在编写一个使用DXGI库的程序 - 它编译得很好,但是当我运行可执行文件时,CreateDXGIFactory1中的HRESULT出现为0x80004002或E_NOINTERFACE。

我错过了某种类型的库,或者这里有更深层次的问题吗?

我使用的代码如下:

输出为“错误:0x80004002”。

  //Initialize a UUID
  GUID uuid;
  HRESULT hCreateUUID = CoCreateGuid(&uuid);

  //Convert the UUID to string
  LPOLESTR stringUUID;
  HRESULT hStringToUUID = StringFromCLSID(uuid, &stringUUID);

  //Initialize the factory pointer
  IDXGIFactory1* pFactory;

  //Actually create it
  HRESULT hCreateFactory = CreateDXGIFactory1(uuid, (void**)(&pFactory));
  if (hCreateFactory == S_OK) {
    printf("Factory creation was a success\n");
  } else {
    printf("ERROR: 0x%X\n", hCreateFactory);
  }

1 个答案:

答案 0 :(得分:0)

您正在传递一个随机的,新创建的GUID。这毫无意义。您应该传递您希望获得的接口的IID,即__uuidof(IDXGIFactory1)documentation中的示例显示了这一点。