UsbStringSetDescriptor
From EDM2
Contents
Description
Warning Do NOT use this function unless you know your USB device supports it.
Executes the Standard Device Request that adds or updates the String Descriptor.
Syntax
ulrc = UsbStringSetDescriptor(Handle,ucIndex,usLanguage,usLength,pucDescriptor)
Parameters
- Handle
- the Device Handle received from the previous UsbOpen.
- ucIndex
- the Descriptor Index or 0 to supply the array of Language Codes.
- usLanguage
- the appropriate Language Code as to the array of Language Codes.
- usLength
- the desired number of bytes up to 255 for the whole String Descriptor.
- pucDescriptor
- the address of the variable containing the String Descriptor.
Return Code
0x0000 - NO_ERROR
Errors
0x0006 - ERROR_INVALID_HANDLE 0x0008 - ERROR_NOT_ENOUGH_MEMORY 0x0057 - ERROR_INVALID_PARAMETER 0x005F - ERROR_INTERRUPT 0x0122 - ERROR_TOO_MANY_HANDLES 0x0280 - ERROR_TIMEOUT 0x1B58 - USB_NOT_INIT 0x4000 - USB_IORB_REQUEST 0x80XX - USB_IORB_FAILED 0xFF0D - ERROR_INVALID_DATA 0xFF13 - ERROR_I24_INVALID_PARAMETER 0xFF13 - USB_IDC_PARMERR 0xFF18 - USB_IDC_ADDRINV 0xFF37 - ERROR_DEV_NOT_EXIST 0xFF5D - EROR_NO_ITEMS 0xFFA7 - ERROR_LOCK_FAILED
Remarks
Warning Do NOT use this function unless you know your USB device supports it.
Example Code
//Code Snippet - UsbStringSetDescriptor { APIRET ulrc; PUCHAR pucDescriptor; UCHAR ucDescriptor[255]; UCHAR ucIndex = 2; USHORT usLanguage = 0x0409; USHORT usLength = sizeof(ucDescriptor); pucDescriptor = &ucDescriptor[0]; ulrc = UsbStringSetDescriptor(Handle,ucIndex,usLanguage,usLength,pucDescriptor); printf("\nUsbStringSetDescriptor - ulrc: 0x%04X (%hu)",ulrc,ulrc); if (!ulrc) //success { int i; printf(" - StringDescriptor:\n"); for (i=0;i<ucDescriptor[0];i++) printf("%02X",ucDescriptor[i]); // for (i=2;i<ucDescriptor[0];i+=2) printf("%c",ucDescriptor[i]); } }