NVAPI を使用している場合、NvAPI_DISP_GetDisplayConfigに問題があります。NvAPI_DISP_GetDisplayConfig への 2 回目の呼び出しで AppCrash が発生します。理由がわからないようです。
NvU32 count = 0;
status = NvAPI_DISP_GetDisplayConfig(&count, NULL);
if (status != NVAPI_OK)
PrintError(status);
printf("Configs: %i\n", count);
NV_DISPLAYCONFIG_PATH_INFO *configinfos = new NV_DISPLAYCONFIG_PATH_INFO[count];
configinfos[0].version = NV_DISPLAYCONFIG_PATH_INFO_VER;
status = NvAPI_DISP_GetDisplayConfig(&count, configinfos);
if (status != NVAPI_OK)
PrintError(status);
私のシステムでは、最初の呼び出しの後、count = 2 です。NvAPI_DISP_GetDisplayConfig に関するメモには、次のように記載されています。
NVAPI_INTERFACE NvAPI_DISP_GetDisplayConfig(
__inout NvU32 * pathInfoCount,
__out_ecount_full_opt *pathInfoCount NV_DISPLAYCONFIG_PATH_INFO * pathInfo
)説明: この API を使用すると、呼び出し元は現在のグローバル ディスプレイ
構成を取得できます。 使用法:呼び出し
元は、必要なすべての
構成の詳細を取得するために、次のようにこれを 3 回呼び出す必要がある場合があります 。 2 番目のパス: pathInfoCount (最初のパスから) の数に関して、pathInfo にメモリを割り当て て取得します //! //! targetInfoCount. sourceModeInfo が必要な場合は、メモリを割り当てるか、NULL に初期化することができます。 3 番目のパス (オプション、ターゲット情報が必要な場合にのみ必要): の数に関して targetInfo にメモリを割り当てます。
targetInfoCount (2 番目のパスから)。対応OS:Windows Vista以降
ありがとう。
編集: configinfos[0].sourceModeInfo = NULL を無駄に設定しようとしました。また、配列を反復処理して、すべての .version および .sourceModeInfo を無駄に設定しようとしました (配列の最初の項目にのみバージョンを設定したドキュメントの例)