コンテンツフレーム起動

RfcEnvironment 文書を SAP ライブラリストラクチャに組み込む

RfcEnvironment 機能を使用してエラー処理およびメモリ割り当て用の独自のルーチンを用意することができます。

void SAP_API RfcEnvironment(RFC_ENV * new_env);
typedef struct
{
void * (* allocate )( void * old_ptr, size_t new_size );
void (* errorhandler )( void );
}
RFC_ENV;

割り当てルーチンの用意

割り当てルーチン(すなわち、アドレスが NULL ではないもの)を指定すると、メモリの割り当て、サイズ変更、開放時にはかならず、 RFC は(デフォルトの代わりに)独自のルーチンを呼び出します。独自の割り当てルーチンは以下の3つの操作を行うことができる必要があります。

allocate( NULL, size ) /* メモリの割当 */
allocate( address, 0 ) /*
メモリの開放 */
allocate( old_addr, new_size) /*
メモリの再割当 */

割り当て機能を指定しない場合、 RFC は標準 C ライブラリルーチンの malloc free 、そして realloc を使用します。

エラーハンドラの用意

エラーハンドラ機能を指定すると、 RFC 内でエラーが発生する時には常に呼び出されます。

環境構造のクリア

機能 RfcEnvironment の使用時には、環境構造 RFC_ENV をクリアしなければなりません。これは以下のように行うことができます。暗に、

static RFC_ENV rfcenv;
rfcenv.allocate = ....;
RfcEnvironment( &rfcenv );

あるいは明示的に、

RFC_ENV rfcenv;
memset( &rfcenv, 0, sizeof( rfcenv ) );
rfcenv.allocate = ....;
RfcEnvironment( &rfcenv );

将来 RFC_ENV 構造が拡張されても、いずれの方法の場合でもプログラムのフレキシビリティは維持されます。

 

 

コンテンツフレーム終了