PPLKB-30:【SDK】デバイスの ROM シリアルナンバーの取得について - project-enigma

PPLKB-30:【SDK】デバイスの ROM シリアルナンバーの取得について

>> Site top >> Misc >> In my palm >> Palm開発情報 >> PPLKB-30:【SDK】デバイスの ROM シリアルナンバーの取得について

最終更新日付:2014/01/01 00:00:00

デバイスの ROM シリアルナンバーの取得について

概要

このトピックでは、Palm OS デバイスの ROM シリアルナンバーを取得する方法について説明します。

 

説明

基本的には、SysGetROMToken API に sysROMTokenSnum を渡して 12 桁のシリアルナンバーを取得します。

char*  p      = NULL;
UInt16 bufLen = 0;
Err    ret    = errNone;

ret = SysGetROMToken( 0, sysROMTokenSnum, (UInt8**)&p, &bufLen );

 

復帰値に問題がなく、p が NULL でなく、かつ *p が 0xFF でなければ ROM シリアルナンバーの取得は成功です。p が指しているのは NULL 終端文字列ではありませんし、フラッシュROMの中にある文字列のアドレスなので、直接 NULL 終端文字列化することはできません。以下の要領で自前の文字列バッファに転記して NULL 終端を付加する必要があります。

char buf[12+1];
if( !ret && !!p && (UInt8)*p != 0xFF ) {
    StrNCopy( buf, p, 12 );
    buf[12] = '\0';
}

 

ここまでは、Palm OS Programmer's Companion Volume I の 11章 7節に書かれているとおりです。しかし、デバイスによってはこの方法では取得できない場合があります。HandSpring のデバイスは、HsGetVersionString 関数に hsVerStrSerialNo を渡してシリアルナンバーを取得する必要があります。

char   buf[12+1];
UInt16 size = 12;
 
HsGetVersionString( hsVerStrSerialNo, buf, &size ); 
buf[12] = '\0'; 

 

『HandSpring のデバイス』は、具体的にはデバイスの製造元会社コードが 'hspr' であるようなデバイスを意味します。したがって、Treo600/650 では HsGetVersionString 関数を使用する必要があります。デバイスの製造元会社コード取得に関する詳細は「【SDK】 デバイスの CompanyID とその取得について」を参照してください。

 

注意事項

この情報は、筆者が CodeWarrior を使用した際に気付いた点について、手探り( と google 検索 )で原因を調査した結果を書き記したものです。そのため、誤りがあるかもしれません。お気づきの方はご指摘いただけると幸いです。

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.