サポート外の開発ツール(C,C++)でTUSBシリーズのDLLを動的に使用するソースファイルの記述方法

2002/08/19 株式会社タートル工業

ここでご説明する方法はサポート範囲外です。TUSB製品全てで動作はテストされておりません。下記方法での不具合には対応できませんし、御質問にもご回答できません。ご了承ください。

(1)DLLを使用するためにLoadLibraryでDLLをロードします。
たとえばDLLの名称が”TUSBSSW.DLL”の場合
HMODULE hModule; //モジュールのハンドル
hModule = LoadLibrary(“TUSBSSW.DLL”);
などとします。

(2)GetProcAddressを使用して各関数のポインタを取得します。
たとえば関数のプロトタイプ(付属のヘッダファイル参照)が
short Tusbs01sw_Device_Open( short );
void Tusbs01sw_Device_Close( short );
shor Tusbs01sw_Out(id,char);
の場合には、
short ( WINAPI * Tusbs01sw_Device_Open)( short );
void ( WINAPI * Tusbs01sw_Device_Close)( short );
short ( WINAPI * Tusbs01sw_Out)( short,char);
Tusbs01sw_Device_Open = (short (WINAPI * )(short))GetProcAddress(hModule,”Tusbs01sw_Device_Open”);
Tusbs01sw_Device_Close = (void ( WINAPI * )( short ))GetProcAddress(hModule,”Tusbs01sw_Device_Close”);
Tusbs01sw_Out = (short ( WINAPI * )( short ,char ))GetProcAddress(hModule,”Tusbs01sw_Out”);
などとします。

(3)先ほどのポインタを使用して関数をコールします。
たとえば
Tusbs01sw_Device_Open(id);
などとします。

(4)アプリケーションの終了時か、DLL関数の使用が終了したら
FreeLibraryでDLLを開放します。
たとえば
FreeLibrary(hModule);
などとします。

  • アプリケーション動作中常にDLL関数をコールするのであれば、LoadLibraryは通常アプリケーションの開始時、FreeLibraryは終了時に実行します。
  • Device_OpenおよびDevice_Closeについても同様です。
  • モジュールのハンドル値はFreeLibraryを行うまで保持しなければなりません。
  • 上記は一例です。同様の方法で他のTUSB製品のドライバにも対応可能です。
  • 上記例では戻り値のチェックをしておりませんが、必ず戻り値をチェックしてください。
  • ここに書かれている方法は参考のための資料です。上記方法での不具合には対応できません。また、ご質問にも回答できませんのでご了承ください。