首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

#define IOCTL_××× CTL_CODE( …)何解?怎么在DeviceIoControl()调用IOCTL_

2012-09-01 
#define IOCTL_CTL_CODE( ……)何解?如何在DeviceIoControl()调用IOCTL_对应功能?wince5.0下ov9650部分摄像

#define IOCTL_××× CTL_CODE( ……)何解?如何在DeviceIoControl()调用IOCTL_×××对应功能?
wince5.0下ov9650部分摄像头驱动代码如下:
// show Camera 
//dwLenIn = 1 : Normal overlay
//dwLenIn = 4 : Alphablending 
//dwLenIn = 5 : Colorkey overlay
#define IOCTL_CAM_SHOWCTL_CODE( FILE_DEVICE_VIDEO, 1, METHOD_NEITHER,FILE_ANY_ACCESS)

// hide Camera 
#define IOCTL_CAM_HIDECTL_CODE( FILE_DEVICE_VIDEO, 2, METHOD_NEITHER,FILE_ANY_ACCESS)

// Set Diplay position 
//dwLenIn = MAKELONG(left, top)
//dwLenOut = MAKELONG(width, height)
#define IOCTL_CAM_SETPOSCTL_CODE( FILE_DEVICE_VIDEO, 3, METHOD_NEITHER,FILE_ANY_ACCESS)
如果要在应用程序中通过DeviceIoControl()调用IOCTL_CAM_SHOW对应的功能函数,要在应用程序代码的头文件里怎么define呢?

[解决办法]
其实没那么复杂,
你自己定义一个 IOCTL_CAM_SHOW 就可以。

在驱动里面

#define IOCTL_CAM_SHOW 1
然后在 IOCONTROL 里面处理
CODE 为 IOCTL_CAM_SHOW 的函数。

然后在应用里面一样

#define IOCTL_CAM_SHOW 1

DeviceIoControl()调用IOCTL_CAM_SHOW

就可以了~!

[解决办法]
都是宏而已。作为DeviceIoControl的参数传进去的。
调用驱动一般都是CreateFile,得到handle,然后去调用DeviceIoControl。
[解决办法]
DeviceIoControl的参数,就是一个代号
[解决办法]
你不用管他是什么
你也在应用中用驱动的
#define IOCTL_CAM_SHOW CTL_CODE( FILE_DEVICE_VIDEO, 1, METHOD_NEITHER,FILE_ANY_ACCESS)

// hide Camera
#define IOCTL_CAM_HIDE CTL_CODE( FILE_DEVICE_VIDEO, 2, METHOD_NEITHER,FILE_ANY_ACCESS)
就能用的了,这是微软弄的一个宏,他表面上方便管理设备的一些控制字,如果我们重新写,我也不愿意这么写,麻烦。
[解决办法]
請加上
#include <winioctl.h>

Paul, Chao @ Techware

热点排行