【发布时间】:2014-01-02 19:46:13
【问题描述】:
我正在调用 SetupCopyOEMInf 为设备驱动程序复制一个 .inf 文件(MSFT 文档说:'SetupAPI 继续用于installing device drivers')。
调用返回 false,因此我将调用 GetLastError,正如文档中所说的 (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM)。这里返回的值是十进制的E000024B 或3758096971。但是,当我使用来自GetLastError 的返回值调用FormatMessage as prescribed 时,lpBuffer 为NULL。
还试图弄清楚为什么SetupCopyOEMInf 会失败(它似乎适用于某些 .inf 文件,但不适用于其他文件)。这是 Windows 8.1
令人费解...有什么想法吗?
谢谢!
代码:
BOOL result = SetupCopyOEMInf(_T("C:\\Users\\edward\\Desktop\\_Test\\cncport.inf"), NULL, SPOST_PATH, 0, NULL, 0, NULL, NULL);
//result is FALSE
LPVOID lpBuffer;
DWORD dw = GetLastError();
DWORD dwMsg = FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpBuffer,
2048, NULL);
【问题讨论】:
-
也许你的代码是错误的。由于您将其保密,我建议您必须自己调试它。
-
GetLastError 返回什么?
-
@David Heffernan: 0xE000024B 或 3758096971(十进制)
-
这看起来不像是系统错误代码。对不起。那在Q中。不应该再问了。感谢代码更新。
-
@David Heffernan:我知道,这就是它如此令人费解的原因。
标签: c winapi device-driver