我正在调用SetupCopyOEMInf
为设备驱动程序复制.inf文件(MSFT文档说:"SetupAPI继续用于安装设备驱动程序")。
返回错误,因此我随后按照文档所述调用GetLastError
(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM
)。 此处返回的值以十进制为单位E000024B
或3758096971
。 但是,当我按照规定的 FormatMessage
从 GetLastError
返回值调用时,lpBuffer
为 NULL。
还试图找出SetupCopyOEMInf
失败的原因(它似乎适用于某些 .inf 文件,但不适用于其他文件)。 这是视窗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);
FORMAT_MESSAGE_FROM_SYSTEM
不支持所有错误代码。您找到的那个是ERROR_FILE_HASH_NOT_IN_CATALOG
,FORMAT_MESSAGE_FROM_SYSTEM
未涵盖。setupapi.h
错误在系统消息资源中似乎没有任何预定义的文本。您必须自己编写错误字符串。
尽管这篇文章是不久前创建的,但您实际上可以使用HRESULT_FROM_SETUPAPI宏获取文本(如Microsoft发布的那样 这里 http://msdn.microsoft.com/en-us/library/windows/hardware/ff545011%28v=vs.85%29.aspx)。这会将返回的错误代码映射到可在 FormatMessage 函数中使用的错误代码。