Winapi CreateFile无法打开域打印机(错误\u文件\u未找到)

Winapi CreateFile无法打开域打印机(错误\u文件\u未找到),winapi,printing,dns,createfile,Winapi,Printing,Dns,Createfile,我遇到了一个有趣的问题。A找了很多方法,但我找不到任何解决办法 问题是,我试图使用CreateFile函数在域中打开共享打印机,但它返回错误\u FILE\u NOT\u FOUND错误代码。 如果我使用prompt和type copy file.txt \\computer\printer 然后,它成功地完成了具有结果的复制 已复制1个文件 CreateFile参数如下所示: HANDLE file = CreateFile(printer, GENERIC_WRITE, 0, NULL,

我遇到了一个有趣的问题。A找了很多方法,但我找不到任何解决办法

问题是,我试图使用CreateFile函数在域中打开共享打印机,但它返回错误\u FILE\u NOT\u FOUND错误代码。 如果我使用prompt和type

copy file.txt \\computer\printer
然后,它成功地完成了具有结果的复制

已复制1个文件

CreateFile参数如下所示:

HANDLE file = CreateFile(printer, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (file == ERROR_INVALID_HANDLE)
{
    char buffer[256];
    sprintf_s(buffer, sizeof(buffer), "ErrorCode: %i", GetLastError());
    MessageBox(NULL, buffer, "Error opening the file", MB_ICONERROR); 
}

其中,根据调试器包含“\\host\printer”字符串的打印机。 我使用VisualStudio2005SP1构建它

我尝试将打印机添加为许多地方的本地打印机,但结果是CreateFile立即返回

编辑:在Windows XP上,它可以完美地工作。Windows 7就是问题所在


Edit2:FOPEN函数解决了这个问题,因此很可能windows 7函数的实现将成为问题。

很难解释错误文件。除了显而易见的错误之外,找不到任何其他方法。没有这个名字的东西。我希望有人也有同样的经历。因为在命令提示符下,似乎可以使用相同名称和格式的相同打印机。我现在就离开。我花了足够多的时间在你第一盘的白费力气上。我想其他人会帮忙的。谢谢你的帮助!希望下次我能更详细地描述一下这个问题。很抱歉浪费了您的时间。因此解决方案是creationdisposition必须是CREATE\u NEW而不是OPEN\u EXISTING。我发现fopen有效,所以我回头看看有什么区别。
HANDLE file = CreateFile(printer, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (file == ERROR_INVALID_HANDLE)
{
    char buffer[256];
    sprintf_s(buffer, sizeof(buffer), "ErrorCode: %i", GetLastError());
    MessageBox(NULL, buffer, "Error opening the file", MB_ICONERROR); 
}