DeviceIoControl如何从设备驱动程序返回Null终止字符串

时间:2011-04-08 10:04:34

标签: winapi usb driver device wdk

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

1 个答案:

答案 0 :(得分:3)

这是Windows上相当常见的模式。结构将使用WCHAR SomeNameOrPath[1]作为最后一个字段。这允许为struct分配一个大缓冲区,以便紧跟在struct之后的字节可以包含字符串的其余部分。