请输入您要查询的百科知识:

 

词条 IoAttachDeviceToDeviceStack()
释义

如果一个设备被其他设备绑定,它们在一起的一组设备,被称为设备栈(之所以称为栈,是由于和请求的传递方式有关)。实际上,

IoAttachDevice总是会绑定设备栈上最顶层的那个设备。

AttachedDevice是一个用来返回的指针的指针。绑定成功后,被绑定的设备指针被返回到这个地址。

前面已经提到了并不是所有的设备都有设备名字,所以依靠IoAttachDevice无法绑定没有名字的设备。另外还有两个API:一个是

IoAttachDeviceToDeviceStack,另一个是IoAttachDeviceToDeviceStackSafe。这两个函数功能一样,都是根据设备对象的

指针(而不是名字)进行绑定;区别是IoAttachDeviceToDeviceStackSafe更加安全,而且只有在Windows 2000SP4和Windows XP

以上的系统中才有。一般都使用IoAttachDeviceToDeviceStackSafe,但当试图兼容较低版本的Windows 2000时,

应该使用IoAttachDeviceToDeviceStack。

NTSTATUS
IoAttachDeviceToDeviceStackSafe(
IN PDEVICE_OBJECT SourceDevice, // 过滤设备
IN PDEVICE_OBJECT TargetDevice, // 要被绑定的设备栈中的设备
IN OUT PDEVICE_OBJECT *AttachedToDeviceObject// 返回最终被绑定的设备
);

在Window 2000下应该使用另外一个函数IoAttachDeviceToDeviceStack,这个函数除了缺少最后一个参数之外(实际上放到返回值里了),

其他的和IoAttachDeviceToDeviceStackSafe函数相同。

PDEVICE_OBJECT
IoAttachDeviceToDeviceStack(
IN PDEVICE_OBJECT SourceDevice,
IN PDEVICE_OBJECT TargetDevice
);

这个函数返回了最终被绑定的设备指针,这也就导致了它不能返回一个明确的错误码。但是如果为NULL,则表示绑定失败了。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/16 1:34:51