FSCTL_OPBATCH_ACK_CLOSE_PENDING IOCTL (winioctl.h)
クライアント アプリケーションがファイルを閉じる準備ができたことをサーバーに通知します。 ファイルの日和見ロックが解除される準備ができていることを通知した後、この操作を使用します。
この操作を実行するには、次のパラメーターを使用して DeviceIoControl 関数を呼び出します。
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to file
FSCTL_OPBATCH_ACK_CLOSE_PENDING, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
解説
この関数を呼び出す前に、システムやその他のプラグインに予約済みの仮想チャネルが含まれている可能性があるため、使用可能な仮想チャネルの数を想定しないでください。 この関数を呼び出した後、常にCHANNEL_RC_TOO_MANY_CHANNELSリターン コードに対してチェックします。
この操作に対する重複した I/O の影響については、 DeviceIoControl トピックの「解説」セクションを参照してください。
FSCTL_OPBATCH_ACK_CLOSE_PENDINGコントロール コードは、ファイルの日和見ロックが解除される準備ができていることが通知され、すぐにファイルを閉じる予定の場合に使用します。 この操作では、新しい日和見ロックは要求されません。
ファイルを閉じるつもりがない場合は、 FSCTL_OPLOCK_BREAK_ACKNOWLEDGE または 制御コードFSCTL_OPLOCK_BREAK_ACK_NO_2 使用して通知に応答できます。 前者は、ロックが壊れているが排他的日和見ロックである場合に使用され、ファイルが代わりにレベル 2 の日和見ロックを受け取る必要があることを示します。 後者はファイルを開いたままにすることを要求しますが、すべてのロックは失われます。
日和見ロックが解除されたファイルに関連付けられている OVERLAPPED 構造体の hEvent メンバーを使用して、日和見ロックが解除されたことをアプリケーションに通知します。 アプリケーションでは、 GetOverlappedResult や HasOverlappedIoCompleted などの関数を使用することもできます。
Windows 8 および Windows Server 2012 では、このコードは次のテクノロジでサポートされています。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | いいえ |
SMB 3.0 Transparent Failover (TFO) | いいえ |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | いいえ |
クラスターの共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | はい |
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | winioctl.h (Windows.h を含む) |