【问题标题】:SetupDiGetDriverInfoDetail returns ERROR_INSUFFICIENT_BUFFERSetupDiGetDriverInfoDetail 返回 ERROR_INSUFFICIENT_BUFFER
【发布时间】:2012-09-11 04:01:56
【问题描述】:

我使用SetupDiGetDriverInfoDetail 来检索驱动程序的详细信息。我为此使用了以下代码片段。但是每次我执行我的 exe 时,我都会得到ERROR_INSUFFICIENT_BUFFER。如何解决?

SetupDiGetDriverInfoDetail(hDevInfo, &DeviceInfoData, &drvInfoData, &drvInfoDetail, sizeof(drvInfoDetail), NULL);

谢谢..

【问题讨论】:

    标签: c winapi device-driver wdk


    【解决方案1】:

    首先,阅读 Microsoft 对 SetupDiGetDriverInfoDetail function 可能返回 ERROR_INSUFFICIENT_BUFFER 的解释。二、编写代码调用两次。

    第一次调用 SetupDiGetDriverInfoDetail 时使用指向 DWORD 变量的指针,您将在该变量中找出所需的字节数。为足够大的变量分配内存并再次调用 SetupDiGetDriverInfoDetail。

    【讨论】:

    • +1 这个答案是正确的。 OP 应该记下这种调用函数两次的技术(第一次是获取所需的缓冲区大小,然后是第二次获取实际数据),因为它在 Win32 API 中很常见。他的第一次调用应该传递一个缓冲区大小为零,并期望返回缓冲区不足错误和所需的缓冲区大小。
    猜你喜欢
    • 2020-11-07
    • 2011-07-04
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多