主要代码如下:
//**********找到设备路径后,创建该设备的文件句柄***********
HANDLE hDevice = CreateFile( ifDetail->DevicePath, //设备路径
GENERIC_READ | GENERIC_WRITE,   //可读写
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);//*********读文件函数(读没有问题)*********
bool  WINAPI ReadForHID(char* lpBuffer,UINT nNumberOfBytesToRead,
                 UINT &lpNumberOfBytesRead)
{     if (ReadFile( hidDevice, lpBuffer, nNumberOfBytesToRead, (LPDWORD)&lpNumberOfBytesRead, NULL))
            
        return true;
     else
    
        return false;
}//******写文件函数*********
bool  WINAPI WriteToHID(char* lpBuffer,UINT nNumberOfBytesToWrite,
                UINT &lpNumberOfBytesWritten){ 
if (WriteFile(hidDevice,lpBuffer,nNumberOfBytesToWrite,(LPDWORD)                   &BytesLenBeWritten,NULL))    return true;
else
   return false;
}//*******调用写函数**********
unsigned int nNumberOfBytes = 9;
unsigned int nWriteBytes = 9;
char* lpBuffer = new char[nNumberOfBytes];
lpBuffer = "123456789";
WriteToHID(lpBuffer,strlen(lpBuffer),nWriteBytes);//调用写函数
DWORD dwErr = GetLastError();//返回0x00057(参数错误),不知是怎么回事?
实在参数再简单不过了,怎么会出这种错误呢!!况且读并没有任何问题!!
会引发这种错误的一般有哪些原因?能解决的话,愿意另外开帖500分赠送!!

解决方案 »

  1.   

    char* lpBuffer = new char[nNumberOfBytes];
    strcpy(lpBuffer,"123456789");
    WriteToHID(lpBuffer,strlen(lpBuffer),nWriteBytes);//调用写函数
      

  2.   

    to:syy64(太平洋) 
    我用过memcpy,strcpy都不行,还是同样的错误!
      

  3.   

    驱动是否支持写入?试试DeviceIoControl()
      

  4.   

    To:anothervip(Never ending... ...)驱动是操作系统自带的标准驱动,应该是支持写操作的。