FormatMessage在lpBuffer中返回NULL

edt*_*guy 1 c winapi device-driver

SetupCopyOEMInf打算复制.inf文件的设备驱动程序(MSFT文档说:'SetupAPI继续用于安装设备驱动程序 ').

该调用返回false,因此我随后调用GetLastErrordocs(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM).此处返回的值为十进制E000024B3758096971十进制.但是,当我FormatMessage 按照规定调用返回值时GetLastError,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);
Run Code Online (Sandbox Code Playgroud)

Ray*_*hen 7

FORMAT_MESSAGE_FROM_SYSTEM不支持所有错误代码.你找到的ERROR_FILE_HASH_NOT_IN_CATALOG那个是没有被覆盖的FORMAT_MESSAGE_FROM_SYSTEM.该setupapi.h错误不会出现在系统消息的资源为他们的任何预定义的文本.您必须自己编写错误字符串.