0

一些驱动程序通过DeviceIoControl返回一个结构,该结构包含一个以 null 结尾的字符串,比如符号名称。该字符串的位置应该在哪里?例如,USB 主机控制器接受IOCTL_USB_GET_ROOT_HUB_NAME ( http://msdn.microsoft.com/en-us/library/ff537326(v=VS.85).aspx ),它接受USB_HCD_DRIVERKEY_NAME结构的缓冲区作为输出。仔细观察,该结构的DriverKeyName字段http://msdn.microsoft.com/en-us/library/ff539325(v=VS.85).aspx只是一个具有 1 个 WCHAR 类型元素的数组。实际的驱动程序密钥名称应该在哪里?

4

1 回答 1

3

这是 Windows 上相当常见的模式。结构将具有类似于WCHAR SomeNameOrPath[1]最后一个字段的内容。这允许为结构分配一个大缓冲区,以便结构之后的字节可以包含字符串的其余部分。

于 2011-04-08T11:40:40.467 回答