|
虽然结了帖子,不过有东东还是想过来讨论下。
shuiyan说的,是不是deviceIoControl啊。
先用createfile打开设备如XXX,再调用deviceIoControl对其进行读写等io操作,这个io操作最终会在该设备的 XXX_IoCtrl()中实现相应的操作。
这个kernelIoControl似乎是不需要打开设备的操作的,比如在设置中断时,关联逻辑中断号与物理中断号,
if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(UINT32), &gIntrIIC, sizeof(UINT32), NULL))
再通过在 const OAL_IOCTL_HANDLER g_oalIoCtlTable[]中找到对应的handler进行处理。
。。。。
{ IOCTL_HAL_TRANSLATE_IRQ, 0, OALIoCtlHalRequestSysIntr },
{ IOCTL_HAL_REQUEST_SYSINTR, 0, OALIoCtlHalRequestSysIntr },
{ IOCTL_HAL_RELEASE_SYSINTR, 0, OALIoCtlHalReleaseSysIntr },
。。。。。
这个OALIoCtlHalRequestSysIntr 应该是内核实现的吧?
这个是这两天看到的,不知道理解的对不对。
|
|