CreateFile无法打开域打印机(ERROR_FILE_NOT_FOUND)

时间:2015-02-17 07:53:35

标签: winapi printing dns createfile

我遇到了一个有趣的问题。搜索了许多方法,但我找不到任何解决方案。

问题是我正在尝试使用CreateFile函数在域中打开共享打印机,但它返回ERROR_FILE_NOT_FOUND错误代码。 如果我使用提示并输入

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); 
}

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); 
}

其中打印机根据调试器包含'\\ host \ printer'字符串。 我使用Visual Studio 2005 SP1构建它。

我尝试将打印机添加为许多地方的本地priter,但它只是导致CreateFile立即返回。

编辑:在Windows XP上它完美运行。 Windows 7就是问题所在。

Edit2:FOPEN函数解决了这个问题,因此Windows 7实现函数的可能性很大。

0 个答案:

没有答案