Device Management Functions(设备操作函数)


BOOL WINAPI DeviceIoControl(//向设备驱动发送控制码,使设备执行相应操作。
  _In_         HANDLE hDevice,//设备句柄句柄
  _In_         DWORD dwIoControlCode,//控制码,用以区别设备不同的控制行为。
  _In_opt_     LPVOID lpInBuffer,//指向输入数据缓存的指针,其数据格式与dwIoControlCode参数有关,设备接收命令后将对此数据进行处理。。
  _In_         DWORD nInBufferSize,//输入数据缓存的大小
  _Out_opt_    LPVOID lpOutBuffer,//指向输出缓存的指针,该缓存用于存放IO操作返回的数据。其格式与dwIoControlCode有关。
  _In_         DWORD nOutBufferSize,//输出数据字节数
  _Out_opt_    LPDWORD lpBytesReturned,//指向用于存储输出的数据的多少的变量的指针。
  _Inout_opt_  LPOVERLAPPED lpOverlapped//指向OVERLAPPED结构的指针。
);

注意:如果输出缓存太小,不能接收任何数据,那么本函数调用将失败,GetLastError会返回ERROR_INSUFFICIENT_BUFFER

pBytesReturned大小将为0.如果输出缓存能接收部分数据那么GetLastError会返回ERROR_MORE_DATA,pBytesReturned大小将为

驱动程序接收到数据的大小。lpOverlapped为空时,lpBytesReturned不能为空,反之,lpBytesReturned可以为空。此时,lpBytesReturned

如果不为空,那么在lpOverlapped操作结束之前,其值无效。如果设备以FILE_FLAG_OVERLAPPED方式打开,lpOverlapped无效

 

CTL_CODE(//创建IO控制码
  DeviceType,//设备类型,0~32767微软有定义,32768~65535可以用户自定义,
  Function,//功能码,0-2047微软有定义, 2048-4095用户可自定义含义。
  Method,//指定传输缓存数据的方式,微软有定义。
  Access//指定操作访问权限,一般设为所有操作都可以访问
);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值