変換関数は、ネイティブ Win32 DLL でなければなりません (.NET アセンブリではありません)。Microsoft Visual Studio で作成するには、Win32 プロジェクトを作成し、アプリケーションの種類として DLL を選択する必要があります。
64 ビット OS 上では、Silk Performer は 64 ビット プロセスを使って、キャプチャ ファイルを分析して、スクリプトを生成します。つまり、32 ビット版(スクリプトの再生用)と 64 ビット版(スクリプトの生成用)の 2 種類の変換 DLL を作成する必要があります。64 ビット版 DLL は、<32 ビット版 DLL の名前>_x64.dll という名前で、32 ビット版 DLL と同じディレクトリに配置する必要があります。
Silk Performer は、独自のカスタム変換 DLL を作成するためのガイドラインとなる Microsoft Visual Studio のサンプル プロジェクトをヘッダーと .cpp ファイルと共に提供します。このサンプルは、<パブリック ユーザー ドキュメント>\Silk Performer <バージョン>\SampleApps\SampleConversion にあります。
記録ルールで変換 DLL を参照する場合、DLL を Silk Performer 記録ルール ディレクトリ、または、プロジェクト ディレクトリにコピーする必要があります。変換 DLL を Microsoft Visual Studio で開発する際には、ポスト ビルド ステップで DLL をこれらのディレクトリ (記録ルールまたはプロジェクト) にコピーするか、または記録ルールにリリース構成の出力ディレクトリ パスを変更します。
次のシグネチャを持つ変換関数をエクスポートする必要があります。
extern "C" { __declspec( dllexport ) long MyConversionFunction( LPCSTR sOriginalValue, LPSTR sConvertedValue, unsigned long* psConvertedValueLen, void* pReserved); }
C++ リンケージ (extern "C") を使用する目的は、エクスポートした関数の C++ 名前マングルをオフにするためです。C++ リンケージを使用した場合、引数の型のようなほかの情報は関数のエクスポートした名前に加えられます。純粋関数の名前をエクスポートした関数名として使用します (上記の例では MyConversionFunction)。
sOriginalValue | 変換される MBCS 文字列の値。 |
sConvertedValue | 変換した値を MBCS 文字列として受け取る文字列バッファ。 |
psConvertedValueLen | 文字列バッファ sConvertedValue の長さを含む変数へのポインタ変数の値は、変換が成功した場合sConvertedValue に書き出されるバイト数に設定されます。この変数の値は、文字列バッファ sConvertedValue のサイズが小さすぎる場合、変換した値に必要なバイト数に設定する必要があります。 |
pReserved | 今後に利用するために予約。 |
戻り値 |
|