ディスプレイ関連のインターフェイスのセットを取得しようとしていますが、常に 259 エラーが発生するようです。私は非常に経験が浅いWinApi
ので、いくつかのヒントが必要になる可能性があります:)
#include <atlstr.h>
#include <SetupApi.h>
#pragma comment(lib, "setupapi.lib")
#include <stdio.h>
#include <windows.h>
#include <setupapi.h>
#include <devguid.h>
#include <regstr.h>
const GUID GUID_CLASS_MONITOR = {0x4d36e96e, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18};
const GUID GUID_DEVINTERFACE_MONITOR = {0xe6f07b5f, 0xee97, 0x4a90, 0xb0, 0x76, 0x33, 0xf5, 0x7b, 0xf4, 0xea, 0xa7};
int main( int argc, char *argv[ ] )
{
HDEVINFO hDevInfo;
SP_DEVICE_INTERFACE_DATA ifData;
ifData.cbSize = sizeof(ifData);
DWORD dwError;
hDevInfo = SetupDiGetClassDevs(NULL /*&GUID_CLASS_MONITOR*/, NULL, NULL, DIGCF_ALLCLASSES);
dwError = GetLastError();
BOOL bRtn = SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &GUID_CLASS_MONITOR, 0, &ifData); // GUID_DEVINTERFACE_MONITOR did not work either
dwError = GetLastError();
return 0;
}
私が間違っSetupDiGetClassDevs
ていることはわかりませんが、エラーはありませんが、私が試したことはすべて259SetupDiEnumDeviceInterfaces
を返します。デバイスのセットアップとデバイス インターフェイスの GUID の両方を試してみましたが、うまくいきませんでした。
編集: 明確化: bRtn は、SetupDiEnumDeviceInterfaces
失敗したことを意味する 0 を返します。エラーは259
アイテムがないことを意味しますが、私のシステムには 2 つの画面が接続SetupDiGetClassDevs
されており、GUID なしで呼び出しているため、少なくとも 2 つの画面アイテムを取得することを期待していました。
編集:提案されたようにcbSizeを追加