SDKとWDKの両方に、別々の情報が有ります。
ーーー
Oplock Semantics - Overview
https://msdn.microsoft.com/ja-jp/library/ff551011(v=vs.85).aspx
ーーー
Types of Opportunistic Locks
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa365713(v=vs.85).aspx
4種類のOplockが有ります。
- Level 1 Oplock -- 先読み許可、遅延書き込み許可。何でも許可。一人だけ取得可能。
- Level 2 Oplock -- 書き込み者なし。先読み許可。何人でも取得可能。
- Batch Oplock -- コマンドプロンプトのバッチファイル実行は、一行実行するごとにファイルを閉じる・開くを繰り返しやっている。この様を示して、バッチロック。Close/Openを送らない、省く事で最適化します。
- Filter Oplock -- 他者による書き込み&削除を拒否。コンパイラがソースコードを読み取り専用でアクセスする様を示して、フィルタロック。
ーーー
Oplockは、共有モード(DenyRead, DenyWrite)とは別の概念です。
Samba3のドキュメントによると、
「Opportunistic lockingは、この機能に対して、実際には妥当ではない名前 である。この機能の真の利点は、クライアントサイドのデータキャッシングであり…」
ーーー
Breaking Opportunistic Locks
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa363786(v=vs.85).aspx
Oplockは一種の権利ですが、剥奪される可能性も有ります。
ーーー
Opportunistic Lock Examples
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa365436(v=vs.85).aspx
Oplockの動きについて書かれています。
ーーー
OSによって、使われるIOCTLコードが異なるようです。(詳細は未確認)
Windows 7, 8, 8.1
Windows Vista, XP, 2000
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
ーーー
折角Windows 8.1を使っているので、FileTestにてOplockをテストした所、
0x0000012C
ERROR_OPLOCK_NOT_GRANTED
Oplock 要求は拒否されました。
User modeからはダメなのだろうか。
0 件のコメント:
コメントを投稿