Как DeviceIoControl возвращает нулевую завершенную строку из драйвера устройства - PullRequest
0 голосов
/ 08 апреля 2011

Некоторые драйверы возвращают структуру через DeviceIoControl , которая содержит строку с нулевым символом в конце, скажем, символическое имя.Где должно быть расположение этой строки?Например, хост-контроллер USB принимает IOCTL_USB_GET_ROOT_HUB_NAME (* http://msdn.microsoft.com/en-us/library/ff537326(v=VS.85).aspx)which принимает буфер к структуре USB_HCD_DRIVERKEY_NAME в качестве вывода. При ближайшем рассмотрении DriverKeyName поле этой структуры http://msdn.microsoft.com/en-us/library/ff539325(v=VS.85).aspxis просто массив с 1 элементом типа WCHAR. Где должно быть фактическое имя ключа драйвера?

1 Ответ

3 голосов
/ 08 апреля 2011

Это довольно распространенный шаблон в Windows.Структура будет иметь что-то вроде WCHAR SomeNameOrPath[1] в качестве последнего поля.Это позволяет выделить большой буфер для структуры, чтобы байты сразу после структуры могли содержать остальную часть строки.

...