是不是哪里错了?总提示设备没有连接

select   2009-7-14 15:57 楼主
  1.        
  2.          LPCWSTR strDrvName=L"";
  3.         strDrvName=TEXT("NDS0:");
  4.         HANDLE hHandle;
  5.         hHandle = CreateFile(strDrvName,
  6.                                                 GENERIC_READ | GENERIC_WRITE,
  7.                                                 FILE_SHARE_READ | FILE_SHARE_WRITE,
  8.                                                 NULL,
  9.                                                 OPEN_EXISTING,
  10.                                                 FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
  11.                                                 INVALID_HANDLE_VALUE
  12.                                                 );
  13.         if( hHandle == INVALID_HANDLE_VALUE )
  14.         {
  15.                 AfxMessageBox(_T("createfile error"));
  16.                 return;
  17.         }

  18. DWORD dwReturnedBytes;
  19. DWORD recvData[1024];
  20. DeviceIoControl(  
  21.                         hHandle,  
  22.                         IOCTL_NDIS_GET_ADAPTER_NAMES,  
  23.                         NULL,  
  24.                         0,  
  25.                         &recvData,  
  26.                         1024,
  27.                         &dwReturnedBytes,  
  28.                         NULL);
  29. ::CloseHandle(hHandle);

  30. hHandle = CreateFile(_T("UIO1:"),
  31.                                                 GENERIC_WRITE,
  32.                                                 FILE_SHARE_READ | FILE_SHARE_WRITE,
  33.                                                 NULL,
  34.                                                 CREATE_NEW,
  35.                                                 FILE_ATTRIBUTE_NORMAL,
  36.                                                 INVALID_HANDLE_VALUE
  37.                                                 );
  38. if( hHandle == INVALID_HANDLE_VALUE )
  39. {
  40.         AfxMessageBox(_T("createfile error"));
  41.         return;
  42. }
  43. ////Query Binding
  44. dwReturnedBytes = 0;
  45. char buff[1024];
  46. PNDISUIO_QUERY_BINDING recvBuffer = (PNDISUIO_QUERY_BINDING)buff;
  47. DeviceIoControl( hHandle,
  48.                                 IOCTL_NDISUIO_QUERY_BINDING,
  49.                                 recvBuffer,
  50.                                 sizeof(NDISUIO_QUERY_BINDING),
  51.                                 NULL,
  52.                                 1024,
  53.                                 &dwReturnedBytes,
  54.                                 NULL
  55.                                 );
  56. USHORT pDevName[1024];
  57. memset(pDevName, 0, 1024);
  58. memcpy(pDevName,&buff[recvBuffer->DeviceNameOffset],recvBuffer->DeviceNameOffset);

  59. CString s;
  60. s.Format(_T("%s"),pDevName);
  61. AfxMessageBox(s);

  62. ////Open Device
  63. dwReturnedBytes = 0;
  64. DeviceIoControl( hHandle,
  65.                                         IOCTL_NDISUIO_OPEN_WRITE_DEVICE,
  66.                                         pDevName,
  67.                                         wcslen(pDevName)*sizeof(TCHAR),
  68.                                         NULL,
  69.                                         0,
  70.                                         &dwReturnedBytes,
  71.                                         NULL
  72.                                         );
  73. char m_pBuffer[1024] ="this is a test";

  74. int bRet = WriteFile(hHandle, m_pBuffer, sizeof(m_pBuffer),&dwReturnedBytes, NULL);
  75. if (!bRet) {
  76.         CString s;
  77.         s.Format(_T("%d"),::GetLastError());
  78.         AfxMessageBox(s);
  79.         return;
  80. }

回复评论 (3)

实在难以揣测楼主问题,...........
点赞  2009-7-14 16:54
引用: 引用 1 楼 gooogleman 的回复:
实在难以揣测楼主问题,...........


同意,LZ应该把问题说详细一些  
点赞  2009-7-14 17:27
哦。对不起。我没说清楚。。我的想法是用NDISUIO驱动去发以太帧。一直到OPEN DRIVER都是好的。。

在WriteFile的时候返回错误。。提示1167:设备没有连接。

我是新手,不知道我的操作方法可对。。。针对这个错误提示,我应该做哪方面修改?
点赞  2009-7-14 18:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复