iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >AddDevice 设备命名(3)
  • 703
分享到

AddDevice 设备命名(3)

设备AddDevice 2023-01-31 02:01:58 703人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

 其它对象 设备可能还有其它一些需要在ADDDevice中初始化的对象。这些对象可能包括各种同步对象,各种队列头(queue anchors),聚集/分散列表缓冲区,等等。事实上,在本书的其它地方讨论这些对象的初始化更合适。 初始化设备标志

 其它对象

设备可能还有其它一些需要在ADDDevice中初始化的对象。这些对象可能包括各种同步对象,各种队列头(queue anchors),聚集/分散列表缓冲区,等等。事实上,在本书的其它地方讨论这些对象的初始化更合适。

初始化设备标志

设备对象中有两个标志位需要在AddDevice中初始化,并且它们在以后也不会改变,它们是DO_BUFFERED_io和DO_DIRECT_IO标志。你只能设置并使用其中一个标志,它将决定你以何种方式处理来自用户模式的内存缓冲区。(我将在第七章中讨论这两种缓冲模式的不同,以及你如何选择) 由于任何在后面装入的上层过滤器驱动程序将复制你的标志设置,所以在AddDevice中做这个选择十分重要。如果你在过滤器驱动程序装入后改变了设置,它们可能会不知道。

设备对象中有两个标志位属于电源管理范畴。与前两个缓冲区标志不同,这两个标志在任何时间都可以被改变。我将在第八章中详细讨论它们,但这里我先介绍一下。DO_POWER_PAGABLE意味着电源管理器将在PASSIVE_LEVEL级上向你发送IRP_MJ_POWER请求。DO_POWER_INRUSH意味着你的设备在上电时将汲取大量电流,因此,电源管理器将确保没有其它INRUSH设备同时上电。
设置初始电源状态
大部分设备一开始就进入全供电状态。如果你知道你的设备的初始电源状态,应该告诉电源管理器:

POWER_STATE state;

state.DeviceState = PowerDeviceD0;

PoSetPowerState(fdo, DevicePowerState, state);
电源管理的细节请见第八章。
建立设备堆
每个过滤器驱动程序和功能驱动程序都有责任把设备对象放到设备堆栈上,从PDO开始一直向上。你可以调用IoAttachDeviceToDeviceStack完成你那部分工作:

NTSTATUS AddDevice(..., PDEVICE_OBJECT pdo)

{

  PDEVICE_OBJECT fdo;

  iocreateDevice(..., &fdo);

  pdx->LowerDeviceObject = IoAttachDeviceToDeviceStack(fdo, pdo);

}
IoAttachDeviceToDeviceStack的第一个参数是新创建的设备对象的地址。第二个参数是PDO地址。AddDevice的第二个参数也是这个地址。返回值是紧接着你下面的任何设备对象的地址,它可以是PDO,也可以是其它低级过滤器设备对象。如果该函数失败则返回一个NULL指针,因此你的AddDevice函数也是失败的,应返回STATUS_DEVICE_REMOVED。
清除DO_DEVICE_INITIALIZING标志
在AddDevice中最后一件需要做的事是清除设备对象中的DO_DEVICE_INITIALIZING标志:

fdo->Flags &= ~DO_DEVICE_INITIALIZING;

当这个标志设置时,I/O管理器将拒绝任何打开该设备句柄的请求或向该设备对象上附着其它设备对象的请求。在驱动程序完成初始化后,必须清除这个标志。在以前版本的windows NT中,大部分驱动程序在DriverEntry中创建所有需要的设备对象。当DriverEntry返回时,I/O管理器自动遍历设备对象列表并清除该标志。但在WDM驱动程序中,设备对象在DriverEntry返回后才创建,所以I/O管理器不会自动清除这个标志,驱动程序必须自己清除它。

 

--结束END--

本文标题: AddDevice 设备命名(3)

本文链接: http://www.lsjlt.com/news/185836.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • AddDevice 设备命名(3)
     其它对象 设备可能还有其它一些需要在AddDevice中初始化的对象。这些对象可能包括各种同步对象,各种队列头(queue anchors),聚集/分散列表缓冲区,等等。事实上,在本书的其它地方讨论这些对象的初始化更合适。 初始化设备标志...
    99+
    2023-01-31
    设备 AddDevice
  • H3C设备命名规则
    GE 通常就是千兆以太网 COMBO口么也是千兆口,但是需要配模块,可以用光模块,也可以用电口。 光口就是可以接光纤,电口就是跟GE一样了,所以叫COMBO口,光口跟电口同时插,默认光口生效很官方的回答。。 H3C商业产品命名规则汇总 一、...
    99+
    2023-01-31
    规则 设备 H3C
  • CentOS7下网络设备如何命名
    本篇内容介绍了“CentOS7下网络设备如何命名”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在CentOS 5的时候,我们习惯了eth0 ...
    99+
    2023-06-10
  • 怎么设置3级域名解析
    设置三级域名解析的方法首先,在浏览器中进入域名代理商网站,并登录到域名管理控制台;登录到域名管理控制台后,在域名列表选择需要解析的域名,并点击域名管理;在域名管理界面中,点击“添加记录”按钮;最后,在弹出的添加记录对话框中,添加一条记录类型...
    99+
    2024-04-02
  • 多设备adb连接命令
    先使用adb devices获取对应的设备序列号,如: 要使用adb命令,只需在adb + ‘-s’+序列号+其他,例如: 来源地址:https://blog.csdn.net/qq_38122220/ar...
    99+
    2023-08-18
    adb android
  • ubuntu如何修改设备名称
    ubuntu修改设备名称的方法:1、打开终端;2、输入“sudo vi /etc/hostname”命令修改配置文件中的设备名;3、输入“sudo vi /etc/hosts”命令将其内容中的设备名进行修改;4、输入“reboot”命令重启...
    99+
    2024-04-02
  • linux怎么修改设备名称
    在Linux系统中,可以通过以下步骤来修改设备名称: 打开终端,以管理员身份登录系统。 使用以下命令查看当前设备的名称: s...
    99+
    2024-02-29
    linux
  • Linux系统中PCI设备和USB设备有哪些命令
    本篇内容介绍了“Linux系统中PCI设备和USB设备有哪些命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!lspciNAMElspci ...
    99+
    2023-06-12
  • CCNA系列课程(3)CDP及设备基本操
    第三节课     CDP及Cisco 设备常规操作 杜飞 2009-06-25        今天主要介绍一些Cisco设备的自动发现协议:CDP,然后再介绍一下设备的基本操作如接口类型,常见命令等。 首先咱们先来看第一个知识点 Cisco...
    99+
    2023-01-31
    课程 系列 设备
  • VOIP设备中常见的3种传真的区别
    T30的传真信号通过IP网络有两种模式 VBD模式:MG不对T30传真信号做任何处理直接打包在RTP协议中,以RTP流的方式发送(这种方式传真信号是同语音流,所以需要将语音编码方式协商成G711无损编码方式,以减小对传真信号的损害) T38...
    99+
    2023-01-31
    区别 传真 常见
  • 我找不到 pcap.Openlive 的设备名称
    php小编百草接收到读者的问题:“我找不到pcap.Openlive的设备名称。”在进行网络数据包捕获时,pcap.Openlive是一个常用的函数,用于打开网络设备进行实时抓包。然而...
    99+
    2024-02-12
  • MongoDB设计命名规范有哪些
    MongoDB设计命名规范有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.    &nbs...
    99+
    2024-04-02
  • VBScript如何根据盘符找设备名
    这篇文章主要介绍VBScript如何根据盘符找设备名,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!复制代码 代码如下:On Error Resume NextstrComputer = "." S...
    99+
    2023-06-08
  • linux怎么修改网卡设备名称
    要修改Linux上的网卡设备名称,可以按照以下步骤进行操作:1. 查看当前网卡的设备名称。可以使用`ifconfig`或者`ip a...
    99+
    2023-09-14
    linux
  • 云服务器怎么重启设备设置的命令
    重启服务器设置的命令通常为"startup restart"或"restart"。 以下是一些关于重启服务器设置的命令: 首先,检查您的硬件和软件设置,确保所有硬件和软件均处于正常的工作状态。 在 Apache Web 服务器上执行"s...
    99+
    2023-10-27
    重启 命令 服务器
  • 【adb】adb push命令 向设备传输文件
    一、向设备传输文件命令 用于在windows系统下,向设备传输文件。 二、操作步骤 2.1 连接设备 确认电脑已安装adb。 通过usb线将设备与电脑连接。 2.2 启动windows的cmd 按win+r键呼出运行窗口,输...
    99+
    2023-09-02
    adb android Powered by 金山文档
  • Linux基础命令---iostat显示设备状态
    iostatiostat指令用来显示cpu状态,系统IO设备的状态,以及相关磁盘和NFS使用状态。iostat命令通过观察设备相对于其平均传输速率的活动时间来监视系统输入/输出设备负载。iostat命令生成可用于更改系统配置的报告,以更好地...
    99+
    2023-06-05
  • linux系统中怎么设置命令别名
    今天就跟大家聊聊有关linux系统中怎么设置命令别名,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。用法:alias [-p] [name[=value] ... ] 注意&l...
    99+
    2023-06-13
  • 一名3年工作经验的java程序员应该具备的技能!
    一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。1、基本语法这包括static、fin...
    99+
    2023-06-02
  • 使用Python登录网关设备执行命令
    最近发现办公室有一个感测器网关,偶尔会掉线,重启之后,就正常了。手动操作过程如下:# telnet 10.212.82.90 Trying 10.212.82.90... Connected to&n...
    99+
    2023-01-31
    网关 命令 设备
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作