2017-01-12 5 views
0

SMB2プロトコルを実装しています。以前のファイルバージョンを表示するには、クライアントはSMB2 IOCTL reqeust with CtlCode of FSCTL_SRV_ENUMERATE_SNAPSHOTSを送信します。 http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-SMB2%5D.pdfで説明したような応答を送信します3.3.5.15.1以前のバージョンの列挙を処理する要求ファイルの以前のバージョンはSMBクライアントで表示されません

[プロパティ] - >以前のバージョンのディレクトリをクリックすると、以前のバージョンが返されますが、表示されないファイル何でも私は、ファイルとディレクトリの両方に対して同じ応答を返すことを確認しました。

なぜファイルに対して機能しませんか?以前のバージョンとのファイルとディレクトリの違いは? Windowsクライアントのファイルの以前のバージョンを表示するには、他にどのような要求をサポートする必要がありますか?

+0

クライアントを送信するすべての要求を受信する必要があります。なぜすべての要求を記録し、それらを1つずつチェックしないのですか? –

答えて

1

私はディレクトリ/ファイルのプロパティ(以前のバージョンのタブ)を開くときにローカルホストの通信を盗聴しました。クライアントがCreateContextsにSMB2_CREATE_TIMEWARP_TOKEN([MS-SMB2]、2.2.13.2.7)のCreatFile要求([MS-SMB2]、2.2.13SMB2 CREATE Request)を送信したことが判明しました。クライアントはスナップショットのリストを取得し、SMB2_CREATE_TIMEWARP_TOKENでタイムスタンプを使用してCreate requestを実行するタイムスタンプを循環させます。
クライアントが異なるスナップショットからファイルを開き、ファイル変更時に変更を比較しようとしているとします。その後、すべての異なるバージョンを表示します。

+0

REPARSE_POINTSは以前のバージョンをサポートするために必要ですか? – Ashot

+0

キャプチャファイルを送信すれば、どの部分が間違っているのか分かりますか? – Ashot

+0

@Ashot私はキャプチャされたパケットでそれらを見ましたが、STATUS_NOT_A_REPARSE_POINTのようなもので完了しました。 "再解析ポイント"、 "シンボリックリンク"の定義で判断すると、クライアントはディレクトリやファイルが別の実際の場所に座っていないことを確認するようです。私はそれが必要かどうかわかりませんが、あなたは「再解析ポイントではない」としてこれらの要求に答えることができます。しかし、あなたのサーバーデータを記述するすべてのスタッフを実装する方がよいでしょう。なぜなら、再解析ポイントはリンクだけではないからです。たとえば、暗号化キーになる可能性があります。 –

1

これは、特定のウィンドウシェイプの動作か、サーバーのバグです。私たちのNQ Storageサーバーでテストしたところ、クライアントが2012年になったときにファイルとフォルダの両方でうまくいきました。私たちはserveralの他のウィンドウでテストしましたが、現在どのサーバーをリコールできません。正直なところ、Winシェイプがあまりにも多いスナップショットはテストしませんでした。 キャプチャを取ると、どちらの側(CまたはS)が有罪であるかのヒントが得られます。

+0

REPARSE_POINTSをサポートしていますか?以前のバージョンをサポートする必要がありますか? – Ashot

+0

キャプチャファイルを送信すれば、どの部分が間違っているのか分かりますか? – Ashot

+0

少なくとも私は試みます。あなたはmarkrabinovichとして私を見つけることができます –

関連する問題