次の方法で共有


PRJ_CANCEL_COMMAND_CB コールバック関数 (projectedfslib.h)

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

構文

PRJ_CANCEL_COMMAND_CB PrjCancelCommandCb;

void PrjCancelCommandCb(
  [in] const PRJ_CALLBACK_DATA *callbackData
)
{...}

パラメーター

[in] callbackData

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

Commandid 取り消す操作を識別します。

戻り値

なし

解説

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

このコールバックの callbackData で CommandId対して PrjCompleteCommand を呼び出すことはエラーではありませんが、CommandId によって識別されたコールバック呼び出しの原因となった I/O が既に終了しているため、no-op です。

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

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

要件

   
サポートされている最小のクライアント Windows 10 Version 1809 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー projectedfslib.h