AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
Usbh_Api_GetSerial 関数

デバイスのシリアル番号をもったストリングディスクリプタを取得する。

Syntax
C++
uhs_boolean_t Usbh_Api_GetSerial(struct usbd_usb_deviceinfo * pDev, udi_ubit8_t * pSerial, udi_ubit8_t bufsize);
引数 
説明 
struct usbd_usb_deviceinfo * pDev 
[in] Usbh_Api_EnumDevice で取得したデバイス 
udi_ubit8_t * pSerial 
[out] シリアル番号を含んだストリングディスクリプタを取得するためのバッファへのポインタ 
udi_ubit8_t bufsize 
[in] バッファサイズ 

デバイスのシリアル番号をもったストリングディスクリプタの取得結果

返値の詳細 
説明 
TRUE 
正常終了 
FALSE 
引数エラー 

デバイスのシリアル番号をもったストリングディスクリプタ(シリアル番号の文字列ではない)の取得を行います。 

内容は下記表のようになっており、先頭のbLength フィールドにはディスクリプタ全体のサイズを含みます。 

適当なサイズのバッファで本関数を呼び出すと、bufsizeで指定したサイズだけディスクリプタの一部をバッファにコピーします。 

その後先頭のbLength のサイズのバッファで本関数を呼び出すと、ディスクリプタ全体を取得することが可能となります。 

 

オフセット 
フィールド 
サイズ 
説明 
bLength 
1byte 
ディスクリプタ全体のサイズ(byte) 
bDescriptorType 
1byte 
ストリングディスクリプタをあらわす定数(03h) 
bSTRING 
不定 
UNICODE表現のシリアル番号 
1: uhs_boolean_t Usbh_Api_GetSerial( struct usbd_usb_deviceinfo * pDev, udi_ubit8_t *pSerial, udi_ubit8_t bufsize ) 2: { 3: udi_ubit8_t size = 0; 4: 5: if (( pDev == NULL ) || ( pSerial == NULL ) || ( bufsize == 0 ) || ( pDev->usbdev_StringSerial == NULL )) { 6: CORE_REPORT_ERROR( USBC_INVALID_PARAMETER ); 7: return FALSE; 8: } 9: 10: if ( bufsize < pDev->usbdev_StringSerial[0] ) { 11: size = bufsize; 12: } else { 13: size = pDev->usbdev_StringSerial[0]; 14: } 15: 16: memcpy( pSerial, pDev->usbdev_StringSerial, size ); 17: 18: return TRUE; 19: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.