DeviceSpecificDescriptor Property
The DeviceSpecificDescriptor property gets or sets an array of custom data that is appended to the configuration descriptor.
This property is read/write.
Syntax
HRESULT put_DeviceSpecificDescriptor(
[in] SAFEARRAY psaDeviceSpecificData
);
HRESULT get_DeviceSpecificDescriptor(
[out, retval] SAFEARRAY ppsaDeviceSpecificData
);
Property Value
A pointer to the new device-specific data for the configuration, in the form of a SAFEARRAY of VARIANT. Each VARIANT must contain an integer between 0 and 255 that uses either the VT_UI1, VT_I2, or VT_I4 data type.
Error Codes
DeviceSpecificDescriptor returns one of the following values:
Name | Meaning |
---|---|
S_OK | The operation succeeded. |
E_INVALIDARG | The ppsaDeviceSpecificData parameter was not a valid pointer or the psaDeviceSpecificData parameter was NULL |
or E_OUTOFMEMORY | The safe array could not be created. |
Remarks
The data in this array is appended to the configuration descriptor that is returned to the host in response to a GET_DESCRIPTOR request. The length of this array is added to the wTotalLength field of the descriptor. The data is placed immediately following the standard configuration descriptor portion as defined in section 9.6.3 of the USB 2.0 specification and before the descriptor for the first interface in the configuration.
The following C++ code example shows how to set the DeviceSpecificDescriptor property.
HRESULT WriteDeviceSpecificDescriptorData
(
ISoftUSBConfiguration *piConfig,
BYTE *pbData,
unsigned int cbData
)
{
HRESULT hr = S_OK;
SAFEARRAY *psaData = NULL;
VARIANT HUGEP *pvarArrayData = NULL;
psaData = ::SafeArrayCreateVector(VT_VARIANT, 0, cbData);
if (SUCCEEDED(hr))
{
hr = ::SafeArrayAccessData(psaData, &pvarArrayData);
if (SUCCEEDED(hr))
{
for (unsigned int i = 0; i < cbData; i++)
{
::VariantInit(&pVarArrayData[i]);
pVarArrayData[i].vt = VT_UI1;
pVarArrayData[i].bVal = pbData[i];
}
hr = ::SafeArrayUnaccessData(psaData);
if (SUCCEEDED(hr))
{
hr = piConfig->put_DeviceSpecificDescriptor(psaData);
}
}
(void)::SafeArrayDestroy(psaData);
}
}
Requirements
Header |
SoftUSBif.h |
Send comments about this topic to Microsoft
Build date: 9/21/2010