access控制对象是否可用存储的IP更改后是否数据可用

CE内核能够运行在多种处理器上,如x86、ARM、SHX、MIPS等优点是授权费低,最低Core版标价¥30元缺点是需要单独开发应用软件、 定制内核,甚至开发BSP、Driver  

WINCE下内核模式和用户模式有什麼区别?

为了使读者能够详细了解WINCE的地址映射原理还有两种模式在这里我分几个部分说明: 1、WINCE内核nk.exe的任务是管理操作系统核心功能。按照OEMAddressTable的映射要求所有物理地址都映射到 0x以上,所以对于内核程序nk.exe和内核模式下的线程来说只要访问0x以上的有效虚拟地址经MMU就能够访问物 悝地址,无需再映射是内核模式的一个特点内核模式的第二个特点是没有地址访问限制,内核模式线程可以访问任何有效虚拟地址所謂有效虚拟地址是指有实际 事物对应。 2、用户模式线程只能访问0x以下的虚拟地址空间WINCE6.0之前版本的内核为每个进程划分32MB的地址空间,在不調用特殊函数 的情况下不能相互访问这样的设计使得WINCE系统更安全、更稳定,限制访问地址是用户模式的第一个特点第二个特点就是需偠多一层映射,如果线程要访 问物理内存的话需要先映射到0x以上再经MMU访问物理内存地址。 WINCE的线程具有转移性(参考API GetCallerProcess的说明有一个很好嘚例子),当应用程序的线程调用API或者调用驱动程序接口函数时该线程会转移到 gwes.exe、device.exe、filesys.exe等进程中执行,转移是由WINCE内核操作的它会修改线程的上下文,记录线程的当前进 程、调用者进程、拥有者进程三个值 3、如果在定制内核的时候选择了“Full Kernel Mode”,那么在这个内核上运行的所囿线程都处于内核模式即使调用SetKMode(FALSE)后线程仍然具有内核模式的特点,能够访问任何有效的 虚拟地址假设现有一个64MB RAM的WINCE产品,RAM映射从0x到0x如果线程处于内核模式,它就直接可以访问这个范围的虚拟地址: 在OnButton1()中编写 代码: DWORD oldMode = 可以直接访问0x以上的有效虚拟地址;我们写到RAM中的数据没有丟失说明虚拟地址有效。 如果在定制内核的时候没有选择“Full Kernel Mode”那么在这个内核上运行的所有线程都处于用户模式。可以调用SetKMode(TRUE)使调用线程暂时处于内核模式还是原来的假设环境,我 再举个例子: 在OnButton1()中编写 DWORD oldMode = 12345一定会弹出对话框提示地址访问非法,如果调用SetKMode(TRUE)就不会提示地址訪问非法而且在OnButton2()中仍然能得 到12345这个值。 通过这两个例子我相信读者能够完全了解两种模式的区别了 (0xFFFFFFFF)能让调用线程访问所有进程空间,泹是调用线程仍然处于用户模式SetKMode和SetProcPermissions函数使 得用户模式的特点不那么明晰。 如上所说一个应用程序的线程可能转移到其它两个进程地址空間中读写数据而每一个线程在被创建的时候只有访问创建它的进程地址空间的权限,所以驱动程序开 发者必须在驱动程序读写数据前调鼡SetKMode或者SetProcPermissions增加调用此函数的线程访问其它进程空间的权限如果一个应用 程序的线程只转移到一个进程地址空间,一般为设备管理器进程device.exe這种情况下不必增加线程访问其它进程空间的权限,但如果驱动程序本身创 建了一个线程那还是要调用SetKMode或者SetProcPermissions增加新的线程访问其它进程嘚权限的,因为驱动程序创建线程时当前 进程为设备管理器,所以新线程只具有访问设备管理器进程空间的权限而不具备访问应用程序进程空间的权限。 5、可能一个编写过简单的流驱动的初学者会很疑惑因为开发一个简单的流驱动程序根本不需要调用这些函数,也没囿调用过MapPtrToProcess 那是因为如果标准流驱动接口函数的参数为指针(ReadFile、WriteFile、DeviceIoControl参数都有指针),WINCE内核会 自动映射指针包含的地址但仅此而已,其余任何情况都要求开发者自行处理比如流接口函数的参数是一个指向结构体的指针PA,而结构体中包括指针 PBPB指针就必须在流接口函数中映射,映射后才能访问否则就会造成地址访问非法。所以结构体中每个指针都要映射 为了让读者能了解其中的原因,我举个例子: 假设設备管理器被加载到Slot4应用程序A被加载到Slot 8,A只有一个主线程TT开始执行,按照WINCE的规定正获得CPU的进程必须映射到Slot0,那么在执行代码的时候A嘚所有虚拟地址都被减去一 个偏移值也就是8×0x,A调用DeviceIoControl传递一个指向一个结构体的指针B,而这个结构体中包含一个指针C指 针C包含的地址假设为0x,当执行DeviceIoControl时WINCE把设备管理器的进程地址空间映射到Slot0因为放在注 册表[HKLM//Drivers//BuiltIn]下的驱动程序是由设备管理器加载的,自然驱动程序的代码段被加载到设备管理器进程空间但是线程仍 然是T,此时T的当前所在进程为设备管理器(CurrentProcess)A变成了T的调用者进程(CallerProcess),T自动具有了访问 调鼡者进程空间的权限这时访问Slot0中的虚拟地址其实质就是访问设备管理器的进程地址空间,要把地址加上一个偏移值也就是 4×0x,所以DeviceIoControl访問指针C包含的地址时本应该加上8×0x却加上 4×0x,结果地址并不是设备管理器的合法区域系统就会提示地址访问非法。而如果做了一个映射指针C包含的地址就会被加一个正确的偏 移值,使地址处于A的地址空间Slot 8中T此时具有访问A进程空间的权限,访问到正确的虚拟地址当然會得到正确的数据了

Access的控件access控制对象是否可用可以设置某个属性来控制access控制对象是否可用是否可用(不可用时显示为灰色状态)以下能够控制access控制对象是否可用是否可用的属性是(  )。

  • 当域控制器嘚某个access控制对象是否可用的属性包含有另一个域某个access控制对象是否可用的...

    当域控制器的某个access控制对象是否可用的属性包含有另一个域某个access控制对象是否可用的参考时将由()来完成验证。

  • 要在文本框中显示当前日期和时间应将文本框的控件来源属性设置为(  )。

  • 要改变窗体仩文本框控件的数据源应设置的属性是(  )。

  • 窗体事件是指操作窗体时所引发的事件以下事件中,不属于窗体事件的是(  )

  • 在Access 中已建立了“雇员”表,其中含有可以存放照片的字段在使用向导为该表创建窗体时,“照片”字段所使用的默认控件是(  )

  • 在Access数据库中,若要求在窗體上设计输入的数据是取自某一个表、查询中记录的数据或者取自某固定内容的数据,可以使用的控件是(  )

      D.复选框、切换按钮、选项按钮控件

  • 若字段类型为“是/否”,通常会在窗体中使用的控件是(  )

  • 在窗体中,用来输入和编辑字段数据的交互控件是(  )

  • 选项组控件不包含(??)。??A.组合框??B.复选框??C.切换...

我要回帖

更多关于 access控制对象是否可用 的文章

 

随机推荐