1个不稳定版本
0.1.0 | 2023年5月15日 |
---|
#1565 在 嵌入式开发 中
53KB
914 行
usbd-microsoft-os
Microsoft OS USB描述符的usb-device实现。目前仅支持新的Microsoft OS 2.0 描述符标准。如果需要,未来可能添加版本1.0。
此crate提供了负责发送MS OS USB描述符和适当的BOS能力的类 MsOsUsbClass
。它旨在使用描述符的const
结构和生成原始描述符数据的fn
方法进行配置,例如用于WinUSB
use usbd_microsoft_os::{os_20, MsOsUsbClass, WindowsVersion, utf16_lit, utf16_null_le_bytes};
const DESCRIPTOR_SET: os_20::DescriptorSet = os_20::DescriptorSet {
version: WindowsVersion::MINIMAL,
features: &[],
configurations: &[
os_20::ConfigurationSubset {
configuration: 0,
features: &[],
functions: &[
os_20::FunctionSubset {
first_interface: 3,
features: &[
os_20::FeatureDescriptor::CompatibleId {
id: b"WINUSB\0\0",
sub_id: b"\0\0\0\0\0\0\0\0",
},
os_20::FeatureDescriptor::RegistryProperty {
data_type: os_20::PropertyDataType::RegMutliSz,
name: &utf16_lit::utf16_null!("DeviceInterfaceGUIDs"),
data: &utf16_null_le_bytes!("{6b09aac4-333f-4467-9e23-f88b9e9d95f7}\0"),
},
]
}
]
}
],
};
const CAPABILITIES: os_20::Capabilities = os_20::Capabilities {
infos: &[
os_20::CapabilityInfo {
descriptors: &DESCRIPTOR_SET,
alt_enum_cmd: os_20::ALT_ENUM_CODE_NOT_SUPPORTED,
}
],
};
const DESCRIPTOR_SET_BYTES: [u8; DESCRIPTOR_SET.size()] = DESCRIPTOR_SET.descriptor();
const CAPABILITIES_BYTES: [u8; CAPABILITIES.data_len()] = CAPABILITIES.descriptor_data();
pub const fn class() -> MsOsUsbClass {
MsOsUsbClass {
os_20_capabilities_data: &CAPABILITIES_BYTES,
os_20_descriptor_sets: &[&DESCRIPTOR_SET_BYTES],
}
}
查看测试用例以查看规范中的更多示例。
依赖项
~155KB