DeviceIoControl缓冲模式通信
来源:互联网 发布:java修改文件名称 编辑:程序博客网 时间:2024/05/16 06:41
BOOL DeviceIoControl(
HANDLE hDevice, // handle to device
DWORD dwIoControlCode, // operation
LPVOID lpInBuffer, // input data buffer
DWORD nInBufferSize, // size of input data buffer
LPVOID lpOutBuffer, // output data buffer
DWORD nOutBufferSize, // size of output data buffer
LPDWORD lpBytesReturned, // byte count
LPOVERLAPPED lpOverlapped // overlapped information
);
hDevice 用CreateFile打开的设备句柄
HANDLE hDevice =
CreateFile("////.//HelloDDK",
GENERIC_READ | GENERIC_WRITE,
0, // share mode none
NULL, // no security
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );
dwIoControlCode IO控制码
#define in_code CTL_CODE(FILE_DEVICE_UNKNOWN, 0x891, METHOD_BUFFERED,FILE_ANY_ACCESS)
CTL_CODE宏完成
lpInBuffer .输入的缓冲
size 缓冲大小
lpOutBuffer 由DeviceControl例程返回的缓冲
size 也是大小
lpBytesreturned 缓冲实际返回大小
LPOVERLAPPED 信息结构
---------------------------------------------------
关于返回值的问题,
一个由于缓冲区不够大的可以用GetLastError()获取,
详细查看msdn
二,驱动接收到Buffer 但是EXE接收到的大小为0
把程序对比了下发现...驱动详解的DeviceIoControlRoutine下
pIrp->IoStatus.Information=0,所以一直返回0,所以
pIrp->IoStatus.Information这个要设定返回的大小...
- DeviceIoControl缓冲模式通信
- EXE与SYS通信(缓冲模式)
- EXE与SYS通信(缓冲模式)
- EXE和SYS通信DeviceIoControl
- 应用层与驱动层通信DeviceIoControl
- DeviceIoControl
- DeviceIOcontrol
- DeviceIoControl
- DeviceIOcontrol
- DeviceIOcontrol
- DeviceIoControl
- DeviceIOcontrol
- DeviceIoControl
- DeviceIoControl
- DeviceIoControl
- DeviceIoControl
- 流缓冲处理通信
- 028_实战EXE和SYS通信-28课(缓冲模式)_exe_控制台
- Oracle字符串函数
- android looper 详解
- Oracle 表连接方式分析
- iPhone开发技巧之网络篇(1)--- 解析XML
- Hacking Postgresql for fun!
- DeviceIoControl缓冲模式通信
- 多次乘方运算 超级数
- MessageBox.Show (String) 显示具有指定文本的消息框
- iPhone开发技巧之网络篇(2)--- Web服务
- 推荐19个很有用的 JavaScript 库
- 让apache选择性的决绝某些user-agent
- 单片机驱动DM9000网卡芯片详细调试过程
- iPhone开发技巧之网络篇(3)--- 使用NSOperation建立多任务网络连接
- iPhone开发技巧之网络篇(4)--- 确认网络环境 3G/WIFI