Win32 API 日本語リファレンス
ホーム › Storage.ProjectedFileSystem › PRJ_CANCEL_COMMAND_CB

PRJ_CANCEL_COMMAND_CB

コールバック

シグネチャ

void PRJ_CANCEL_COMMAND_CB(
    PRJ_CALLBACK_DATA* callbackData
);

パラメーター

フィールド型説明
callbackDataPRJ_CALLBACK_DATA*

操作に関する情報です。このコールバックを実装するには、次の callbackData メンバーが必要です。

CommandId キャンセルする操作を識別します。

公式ドキュメント

以前のコールバック呼び出しによる操作をキャンセルする必要があることをプロバイダーに通知します。

解説(Remarks)

プロバイダーのコールバックは、呼び出されるたびに CommandId フィールドを持つ callbackData パラメーターを受け取ります。プロバイダーがこのコールバックの実装を提供する場合は、非同期に処理するコールバック、すなわち HRESULT_FROM_WIN32(ERROR_IO_PENDING) を返したものの PrjCompleteCommand の呼び出しによってまだ完了させていないコールバックの CommandId の値を記録しておく必要があります。プロバイダーがこのコールバックを受け取った場合、それは以前のコールバックの呼び出し要因となった I/O が、明示的に、またはその I/O を発行したスレッドが終了したことによってキャンセルされたことを示します。プロバイダーは、CommandId で識別されるコールバック呼び出しの処理をできるだけ速やかにキャンセルする必要があります。

このコールバックの callbackData に含まれる CommandId に対して PrjCompleteCommand を呼び出してもエラーにはなりませんが、CommandId で識別されるコールバック呼び出しの要因となった I/O は既に終了しているため、何も行われません。

ProjFS は、特定の CommandId に対する PRJ_CANCEL_COMMAND_CB を、キャンセル対象のコールバックが呼び出された後にのみ呼び出します。ただし、複数のワーカースレッドを同時に実行できるようにプロバイダーが構成されている場合、キャンセルと元の呼び出しが同時に実行されることがあります。プロバイダーはこの状況に対処できる必要があります。

このコールバックは省略可能です。プロバイダーがこのコールバックの実装を提供しない場合、他のコールバックはいずれもキャンセルできません。プロバイダーはすべてのコールバックを同期的に処理します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)