嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
为了方便,把关于输入参数有误的打印输出仍然输出到stderr控制台屏幕上,方便及时知道输入命令有误.
对于命令的执行结果无论错误还是正确都输出到stdout上,即可用重定向操作符进行指向要求的打印输出文件.
例如:
ddccitool.exe -r 10 -v -F 2 -t 1000 /dev
则按正常输出到屏幕上.
ddccitool.exe -r 10 -v -F 2 -t 1000 /dev >aout.txt
则结果会输出到当前目录的aout.txt文件上.并覆盖aout.txt原来的内容.
ddccitool.exe -r 10 -v -F 2 -t 1000 /dev >>aout.txt
则结果会输出到当前目录的aout.txt文件上.并以追加的方式,而不会覆盖aout.txt原来的内容.
每一次以============================隔开.
int ioctl_DDCCI_read(HANDLE h_readwrite, unsigned char *buf, unsigned char len)
{
BOOL bRet=FALSE;
DWORD dwRetBytes = 0;
PVENDORCMMD pbuf;
unsigned int usblen;
usblen = sizeof(VENDORCMMD) len;//add length
pbuf = (PVENDORCMMD)malloc(usblen);
if(pbuf == NULL){
fprintf(stdout,"memory alloc failed\n");
return -1;
}
pbuf->bRequest = Get_DDC_CI_Ctrl;
pbuf->wValue= 0;
pbuf->wIndx = 5;
pbuf->dwLenght = len 1;
bRet = DeviceIoControl(h_readwrite, IOCTL_VENDOR_GET, pbuf, usblen, pbuf, usblen, &dwRetBytes, NULL);
//bRet = TRUE; //for test
if (!bRet)
{
fprintf(stdout,"ioctl()");
fprintf(stdout,"ioctl returned %d\n",GetLastError());
free(pbuf);
return -1;
}
memcpy(buf, &(pbuf->bData[1]), min(len, dwRetBytes-sizeof(VENDORCMMD)));//pbuf->bData[0] is length
free(pbuf);
return min(len, dwRetBytes-sizeof(VENDORCMMD));
}