Я пытаюсь настроить USB-устройство для автоматического использования WinUSB в качестве драйвера при подключении к компьютеру с Windows 8, как описано здесь.
В нем говорится:
Чтобы стек драйвера USB знал, что устройство поддерживает дескрипторы расширенных функций, устройство должно определить строковый дескриптор ОС, который хранится в строковом индексе 0xEE.
Я понимаю, что мне нужно создать структуру, содержащую дескриптор, в ячейке памяти 0xEE. Как бы я сделал это в C?
Вот что я пробовал:
// The struct definition
typedef struct {
uint8_t bLength;
uint8_t bDescriptorType;
uint8_t qwSignature[14];
uint8_t bMS_VendorCode;
uint8_t bPad;
} usb_os_str_desc_t;
// Create a pointer to a struct located at 0xEE
volatile usb_os_str_desc_t* const extended_feature_support = (usb_os_str_desc_t*) 0xEE;
// Create a new struct at the location specified in "extended_feature_support"
(*extended_feature_support) = {
.bLength = 0x12,
.bDescriptorType = 0x03,
.qwSignature = "MSFT100",
.bMS_VendorCode = 0x04,
.bPad = 0x00
};
Но компилятору это не нравится, он жалуется, что определение данных не имеет типа. Есть ли способ сделать это в C? Я правильно понял статью?
Любая помощь будет оценена.