Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Apparaat-, configuratie- en interfacedescriptors kunnen verwijzingen naar tekenreeksdescriptors bevatten. In dit onderwerp wordt beschreven hoe u een bepaalde tekenreeksdescriptor op het apparaat kunt ophalen.
Er wordt naar tekenreeksdescriptors verwezen door het indexnummer op basis van één. Een tekenreeksdescriptor bevat een of meer Unicode-tekenreeksen; elke tekenreeks is een vertaling van de anderen in een andere taal.
Client drivers use UsbBuildGetDescriptorRequest, with DescriptorType = USB_STRING_DESCRIPTOR_TYPE, to build the request to obtain a string descriptor. The Index parameter specifies the index number, and the LanguageID parameter specifies the language ID (the same values are used as in Microsoft Win32 LANGID values). Stuurprogramma's kunnen het speciale indexnummer van nul aanvragen om te bepalen welke taal-id's het apparaat ondersteunt. Voor deze speciale waarde retourneert het apparaat een matrix met taal-id's in plaats van een Unicode-tekenreeks.
Omdat de tekenreeksdescriptor bestaat uit gegevens met een variabele lengte, moet het stuurprogramma deze in twee stappen verkrijgen. Eerst moet het stuurprogramma de aanvraag uitgeven, waarbij een gegevensbuffer wordt doorgegeven die groot genoeg is om de header voor een tekenreeksdescriptor, een USB_STRING_DESCRIPTOR structuur, op te slaan. The bLength member of USB_STRING_DESCRIPTOR specifies the size in bytes of the entire descriptor. The driver then makes the same request with a data buffer of size bLength.
The following code demonstrates how to request the i-th string descriptor, with language ID langID:
USB_STRING_DESCRIPTOR USD, *pFullUSD;
UsbBuildGetDescriptorRequest(
pURB, // points to the URB to be filled in
sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST),
USB_STRING_DESCRIPTOR_TYPE,
i, // index of string descriptor
langID, // language ID of string.
&USD, // points to a USB_STRING_DESCRIPTOR.
NULL,
sizeof(USB_STRING_DESCRIPTOR),
NULL
);
pFullUSD = ExAllocatePool(NonPagedPool, USD.bLength);
UsbBuildGetDescriptorRequest(
pURB, // points to the URB to be filled in
sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST),
USB_STRING_DESCRIPTOR_TYPE,
i, // index of string descriptor
langID, // language ID of string
pFullUSD,
NULL,
USD.bLength,
NULL
);