PFNRASRECEIVEBUFFER
コールバックシグネチャ
DWORD PFNRASRECEIVEBUFFER(
HANDLE hPort,
BYTE* pBuffer,
DWORD* pdwSize,
DWORD dwTimeOut,
HANDLE hEvent
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| hPort | HANDLE | データを受信するポートのハンドル。このハンドルは、 RasCustomScriptExecute 関数の第 1 パラメーターとして RAS から渡されたハンドルである必要があります。 |
| pBuffer | BYTE* | hPort パラメーターで指定されたポートからデータを受け取るバッファーへのポインター。このバッファーは RasGetBuffer 関数を使用して取得します。 |
| pdwSize | DWORD* | pBuffer パラメーターが指すバッファーに返されたデータのサイズを受け取る DWORD 変数へのポインター。 |
| dwTimeOut | DWORD | カスタムスクリプト DLL がこれ以上データを待機しなくなるまでのタイムアウト時間を、ミリ秒単位で指定します。 |
| hEvent | HANDLE | 受信データが利用可能になったときに RAS がシグナル状態にするイベントオブジェクトへのハンドル。 |
公式ドキュメント
カスタムスクリプト DLL は、指定されたポート経由でサーバーからデータを受信する準備ができたことを RAS に通知するために、 RasReceiveBuffer 関数を呼び出します。
PFNRASRECEIVEBUFFER 型は、このコールバック関数へのポインターを定義します。RasReceiveBuffer は、アプリケーション定義の関数名のプレースホルダーです。
戻り値
関数が成功した場合、戻り値は ERROR_SUCCESS です。
関数が失敗した場合、戻り値は次のいずれかのエラーコードになります。
| 値 | 意味 |
|---|---|
| pBuffer パラメーターに渡されたバッファーへのポインターが無効です。 | |
| hPort パラメーターで指定されたハンドルが無効です。 |
解説(Remarks)
RasReceiveBuffer は非同期関数です。 RasReceiveBuffer は、データがまだ利用可能でない場合でもすぐに制御を返します。カスタムスクリプト DLL は、hEvent パラメーターで指定されたイベントオブジェクトを待機する必要があります。データが利用可能になると、RAS はこのイベントをシグナル状態にします。その後、カスタムスクリプト DLL は RasRetrieveBuffer 関数を呼び出してデータを取得します。カスタムスクリプト DLL は、RasReceiveBuffer に渡したものと同じバッファーポインターを RasRetrieveBuffer に渡すことができます。
何らかの理由でデータがポストされる前にポートが切断された場合も、RAS はイベントオブジェクトをシグナル状態にします。この場合、 RasRetrieveBuffer は、失敗の原因を示す Raserror.h で定義されたエラーを返します。
カスタムスクリプト DLL は、関数ポインターを介して RasReceiveBuffer を呼び出します。この関数ポインターは、RAS が DLL に実装された RasCustomScriptExecute を呼び出すときに、パラメーターとしてカスタムスクリプト DLL に渡されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)