この互換性の問題をどのように解決しますか?

この記事は2006年に書き直されたので、Windows Vistaのリリース前に、もちろんレイモンドは既に答えていました。 そのため、実験の純度のために、コメントを台無しにしないでください。



皆さん、こんにちは。1つの本当の互換性の問題を解決するチャンスがあります。 まだ答えがありません。解決するのを待っています。 これは、Widnows Vistaトラッカーの本当のバグです。





そのため、ベータテスターは、Windowsエクスプローラーは、特定の製造元のサーバーにあるネットワークフォルダーから100個を超えるファイルを表示できないと述べました。 責任あるチームは問題を調査し、サーバーが一部のタイプのリクエストを正しく処理しないことを発見しました。 サーバーは「高速」と「低速」の両方の要求をサポートすると述べているにもかかわらず、ディレクトリから最初の100個のファイルのみを「高速」要求に返し、奇妙なエラーコードを発行しました。 一方、エクスプローラーが「低速」モードに切り替えられた場合、すべてが正常に機能しました。 (「高速」要求はWindows Vistaでのみ表示され、Windows XPは「低速」要求のみをサポートしていました)。 追加情報:このエラーを修正するサーバーソフトウェアの更新プログラムは既にリリースされていますが、ベンダーは引き続き古いバージョンのドライバーを提供しています。



そのような状況で何をしますか? いくつかのオプションがあります。独自のオプションを選択するか、新しいオプションを提案してください。



何もしない



サードパーティのドライバーの誤動作に注意を払ってはいけません。 そのようなデバイスを購入する運が良くない人は、不完全なファイルのリストを受け取ります。 問題を説明するナレッジベースを公開し、更新されたドライバーについてユーザーをベンダーに案内します。



長所



短所





誤ったドライバーを自動的に診断し、警告ダイアログを発行する



Explorerはこの奇妙なエラーコードを認識し、「Server \\ servernameは古いバージョンのXYZドライバーで動作するようです。多数のファイルがあるディレクトリでは正しく動作しません。 すべてのファイルがここに表示されるわけではありません。 \\ servername管理者に連絡して、ドライバーをアップグレードしてください。 そして、チェックボックス「今後メッセージを表示しない」。



長所



短所





誤ったドライバーを自動的に診断し、次回に異なるタイプの要求を適用する





Explorerはこの奇妙なエラーコードを認識し、「OK、このサーバーには誤ったドライバーがあります。 何もするのは遅すぎますが、次回は、遅いリクエストを使用してサーバーにアクセスします。」

DOS攻撃の可能性を排除するには、たとえば最後の16台のサーバーのみを覚えておく必要があります(リストが無制限の場合、攻撃者はこのエラーコードで数百万の異なる名前で応答するサーバーを作成することにより、すべてのメモリを使い果たすことができます)。



長所:



短所





「低速」モードを含むネットワーククライアントで設定を行います。





ネットワーククライアントに設定を追加します。「サーバーが高速要求をサポートしているかどうか尋ねられたら、サーバーが「はい」と言っても、常に「いいえ」と答えてください。」 この場合、どのプログラムも「高速」モードを使用しようとせず、誰もが低速モードのみを使用します。 しかし、少なくともそれは動作します。



長所



短所





Explorerで「スロー」モードをオンにする設定を行います





Explorerで「常に低速モードを使用し、高速クエリを使用しない」という設定を行います。 要求は遅くなりますが、常に機能します。 ただし、これはExplorerにのみ影響します。 「サーバーは高速クエリをサポートしていますか?」と尋ねる他のプログラムは、対応する回答を受け取り、「高速」クエリを使用しようとすると、Explorerがすでに解決した同じ問題をすべて受け取ります。



長所



短所







デフォルトの高速モードを無効にする





信頼性が低いため、ネットワーククライアントでの高速モードのサポートを停止します。 一部のサーバーは正しくサポートしていません。 これにより、すべてのプログラムが強制的に低速モードを使用するようになります。 ただし、再度有効にする機会は残してください。



長所:



短所:





創造的である。 決定を下す場合は、賛否両論のリストも作成します。



別の明らかなオプションは、記事ではレイモンドによって説明されていませんが、コメントで回答しました。



最初の読み取りで、エラーが返された場合、すぐにリストを再読み取りして完全なリストを返し、サーバーが遅いかのように処理します。



ネットワーククライアントは、リクエストの完了時にリストを返さないが、実行時に非同期的に部分的に返されるため、適切ではありません。 したがって、リストの最初の部分は、ネットワーククライアントがエラーを受信し、リストの再読み取りが必要であることを認識する前であっても返されます(そしてクライアントプログラムによって使用されます)。



また、「Microsoftはプロトコルを開いて完全に文書化する必要がありますが、それはあなた自身の責任です」などのコメントにすぐに対応しています。 Raymondが書いているバグは、プロトコルの正しい実行とは関係ありません。




All Articles