首页 > 解决方案 > 如何调用 SetupDiGetDriverInfoDetail

问题描述

我想通过“SetupDiGetDriverInfoDetailA”函数获取特殊设备驱动程序的详细信息。我的代码是这样的:

            SP_DRVINFO_DATA_A sda;
            SP_DRVINFO_DETAIL_DATA_A sdda;
            memset(&sda, 0, sizeof(SP_DRVINFO_DATA_A));
            memset(&sdda, 0, sizeof(SP_DRVINFO_DETAIL_DATA_A));
            sda.cbSize = sizeof(SP_DRVINFO_DATA_A);
            sdda.cbSize = sizeof(SP_DRVINFO_DETAIL_DATA_A);
            DWORD aaa = 0;

            if (!SetupDiGetSelectedDriverA(hDevInfo, &deviceInfoData, &sda))
            {
                cout << "fail to exec the SetupDiGetSelectedDriverA()" << endl;
                return -1;
            }

            if (!SetupDiGetDriverInfoDetailA(hDevInfo, &deviceInfoData, &sda, &sdda, sizeof(sdda), &aaa))
            {
                auto res2 = GetLastError(); // 87
                cout << "fail to exec the SetupDiGetDriverInfoDetailA()" << endl;
                return -1;
            }

我的问题是如何设置参数,我的代码总是会因 GetLastError() 87(ERROR_INVALID_PARAMETER) 而失败。

标签: c++winapidriver

解决方案


推荐阅读