DoNum = 3 时程序执行流程详解
如果 DoNum 的值为 3,即二进制表示为 0011,那么程序的执行如下:
首先,循环开始,i 的初始值为 0。
-
第一次迭代:
i = 0- 使用
GET_BIT(DoNum, i)判断第 0 位是否为 1,结果为 1,因为GET_BIT(3, 0)的值为 1。 - 执行
DevIoctl(Dodevice, IOCTL_SET_ON, (void*)&i),将 0 作为参数传递给设备。
- 使用
-
第二次迭代:
i = 1- 使用
GET_BIT(DoNum, i)判断第 1 位是否为 1,结果为 1,因为GET_BIT(3, 1)的值为 1。 - 执行
DevIoctl(Dodevice, IOCTL_SET_ON, (void*)&i),将 1 作为参数传递给设备。
- 使用
-
第三次迭代:
i = 2- 使用
GET_BIT(DoNum, i)判断第 2 位是否为 1,结果为 0,因为GET_BIT(3, 2)的值为 0。 - 执行
DevIoctl(Dodevice, IOCTL_SET_OFF, (void*)&i),将 2 作为参数传递给设备。
- 使用
循环迭代完毕,程序执行结束。
总结起来,当 DoNum 的值为 3 时,循环会执行3次。根据 DoNum 的每个位的值,将相应的参数传递给设备进行设置。在本例中,第 0 位和第 1 位为1,所以对应的参数会通过 IOCTL_SET_ON 命令传递给设备;而第 2 位为0,对应的参数会通过 IOCTL_SET_OFF 命令传递给设备。
原文地址: https://www.cveoy.top/t/topic/ik9 著作权归作者所有。请勿转载和采集!