首先,我为我糟糕的英语道歉,因为我不是英语:)
我想使用vb.net中的邮件槽。我对邮件很不错,不知道它们是如何工作的。遇到一些困难,最后用简单的c ++ win32代码进行基本测试,首先要了解它是如何工作的,而不关心vb托管/非托管的东西。我在虚拟机中使用了vs 2010。
问题在于:我终于意识到我的基本测试程序在几台计算机上工作正常但在我的开发计算机上却没有...我不知道原因是什么以及我需要检查什么。
以下是代码:
#include <stdio.h>
#include <Windows.h>
void main()
{
HANDLE hservslot;
HANDLE hclislot;
hservslot = CreateMailslot("\\\\.\\mailslot\\testingslot", 0, 0, NULL);
if (hservslot == INVALID_HANDLE_VALUE)
{
printf("CreateMailslot error : %d", GetLastError());
getchar();
return;
}
hclislot = CreateFile("\\\\*\\mailslot\\testingslot", GENERIC_WRITE, FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL);
if (hclislot == INVALID_HANDLE_VALUE)
{
CloseHandle(hservslot);
printf("CreateFile error : %d", GetLastError());
getchar();
return;
}
BOOL fResult;
DWORD cbWritten;
BYTE buff[4] = {0,1,2,3};
fResult = WriteFile(hclislot, buff , 4, &cbWritten, (LPOVERLAPPED) NULL);
if (fResult)
{
printf("Slot written to successfully.\n");
}
else
{
printf("WriteFile failed with %d.\n", GetLastError());
}
getchar();
CloseHandle(hclislot);
CloseHandle(hservslot);
}
在我的计算机上,我得到了“WriteFile以53失败”(这意味着“没有找到网络路径。”根据msdn doc)。在其他一些计算机上,包括虚拟计算机,我得到“Slot写成功。”
任何关于方向的想法我应该搜索“bug”来修复它? THX。
编辑:顺便说一句,所有的电脑,包括vm,都在Windows 7 pro 64位上。