下面针对流式程序:
流式程序主要是对
IO
口进行控制的。
在驱动程序里面有个
xxx_iocontrol()
函数(
xxx
为驱动的
名字),这个函数主要是对
IO
口的控制,
你要对
IO
口实现怎样的控制都可以在这里编写。
比如:
BOOL LED_IOControl(DWORD hOpenContext, //XXX_Open
返回给上层的那个句柄
DWORD dwCode, //IO
操作码
PBYTE pBufIn, //
传入的
Buffer,
每个
IO
操作码都会定
义自已的
Buffer
结构
DWORD dwLenIn, //
以字节记的大小
PBYTE pBufOut, //
分别为传出的
Buffer
,及其以字节
记的大小
DWORD dwLenOut,
PDWORD pdwActualOut)
{
switch(dwCode)
{
case IO_CTL_GPIO_1_ON:
v_pIOPregs->GPFDAT=v_pIOPregs->GPFDAT&~(0x1<<4);
break;
case IO_CTL_GPIO_2_ON:
v_pIOPregs->GPFDAT=v_pIOPregs->GPFDAT&~(0x1<<5);
break;
case IO_CTL_GPIO_3_ON:
v_pIOPregs->GPFDAT=v_pIOPregs->GPFDAT&~(0x1<<6);
break;
case IO_CTL_GPIO_4_ON:
v_pIOPregs->GPFDAT=v_pIOPregs->GPFDAT&~(0x1<<7);
break;
case IO_CTL_GPIO_ALL_ON:
v_pIOPregs->GPFDAT=v_pIOPregs->GPFDAT&~(0xF<<4);
break;
case IO_CTL_GPIO_1_OFF:
v_pIOPregs->GPFDAT=v_pIOPregs->GPFDAT|(0x1<<4);
break;
case IO_CTL_GPIO_2_OFF:
v_pIOPregs->GPFDAT=v_pIOPregs->GPFDAT|(0x1<<5);
break;
case IO_CTL_GPIO_3_OFF:
v_pIOPregs->GPFDAT=v_pIOPregs->GPFDAT|(0x1<<6);
break;
case IO_CTL_GPIO_4_OFF:
v_pIOPregs->GPFDAT=v_pIOPregs->GPFDAT|(0x1<<7);
break;
case IO_CTL_GPIO_ALL_OFF: