初期化と終了処理は、全てのプログラミングで必要となる共通の処理です。
初期化処理はSmcWInit関数で行います。この関数はデバイスドライバファイルの作成や必要なメモリの確保などを行います。
SmcWInit関数には引数が2つあります。第1引数はデバイス名です。
デバイス名はデバイスマネージャーに登録した"SMC000"などの文字列になります。
第2引数はIDです。IDはドライバより渡される数字で、以降の関数を使用するにはこのIDが必要になります。
関数が正常終了すると、戻り値にが0が返ります。関数の実行に失敗した場合、0以外の値が返ります。
終了処理はSmcWExit関数で行います。
この関数はデバイス、ドライバ動作を停止し、メモリ、スレッドなどの使用していた全てのリソースを開放します。
アプリケーションは必ずこの関数を実行してから終了してください。そうしないと、ドライバが使用していたリソースが開放されないまま残ることがあります。
各言語のプログラミング例
デバイス"SMC000"に対して、初期化と終了処理を行います。
Visual Basic .NET
Dim Ret As Integer
Dim Id As Short
Ret = SmcWInit( "SMC000"
, Id )
If Ret <> 0 Then
System.Diagnostics.Debug.WriteLine("SmcWInitでエラーが発生しました
" & Ret)
End If
Ret = SmcWExit( Id )
If Ret <> 0 Then
System.Diagnostics.Debug.WriteLine("SmcWExitでエラーが発生しました
" & Ret)
End If
Visual C#
int Ret;
short Id;
Ret = Smc.WInit ( "SMC000"
, out Id );
if(Ret != 0){
System.Diagnostics.Debug.WriteLine("SmcWInitでエラーが発生しました
" + Ret.ToString());
}
Ret = Smc.WExit ( Id );
if(Ret != 0){
System.Diagnostics.Debug.WriteLine("SmcWExitでエラーが発生しました
" + Ret.ToString());
}
Visual C++ (MFC)
long Ret;
short Id;
Ret = SmcWInit( "SMC000"
, &Id );
if(Ret != 0){
printf("SmcWInitでエラーが発生しました %d\n", Ret);
}
Ret = SmcWExit( Id );
if(Ret != 0){
printf("SmcWExitでエラーが発生しました %d\n", Ret);
}
Python
Ret = ctypes.c_long()
Id = ctypes.c_short()
Ret.value = csmc.SmcWInit ( b"SMC000" , ctypes.byref(Id))
if Ret.value != 0:
print(f"SmcWInitでエラーが発生しました {Ret.value}\n")
Ret.value = csmc.SmcWExit ( Id )
if Ret.value != 0:
print(f"SmcWExitでエラーが発生しました {Ret.value}\n")