Windowsでコピペできるデータの最大サイズとは?

GIGAZINE


Windowsでテキストやファイルをコピー&ペーストする際は「クリップボード」と呼ばれる領域にデータが格納されます。このクリップボードに保存できるデータの最大サイズやコピー&ペーストの仕組みについてWindowsの主要開発者であるレイモンド・チェン氏が解説しています。

Is there a maximum size for Windows clipboard data? Because I’m getting null for something I know should be there – The Old New Thing
https://devblogs.microsoft.com/oldnewthing/20220608-00/?p=106727

チェン氏がクリップボードについての解説を投稿した理由は、あるユーザーの質問にあります。そのユーザーは30万行超えの巨大なExcelファイルのセルをコピー&ペーストしようとしたものの、失敗してしまったとのこと。Windowsではクリップボードの中身を取得する際に関数「Get­Clipboard­Data」が使われますが、ユーザーが分析した結果30万行超えExcelファイルのセルをコピーしようとすると「Get­Clipboard­Data」の実行が失敗していることが判明しました。このことからユーザーは「Excelのデータが大きすぎるためクリップボードへのデータ格納が失敗した」と考え、チェン氏にクリップボードに保存可能な最大サイズを質問しました。

チェン氏は上記の質問に対して「Windowsではクリップボードに格納可能なデータの最大容量を設定しておらず、格納可能データ容量は使用可能なメモリ容量に依存しています」と回答しています。さらに、上記のExcelデータのコピー&ペースト失敗は「クリップボードへ格納可能なデータ容量」ではなく、別の原因が関係していると指摘しています。


Windowsで動作するアプリケーションがクリップボードにデータを格納する方法は2種類あります。1つはクリップボードに直接データを格納する方法で、もう1つがクリップボードにはデータを格納せず「クリップボードが呼び出される際にアプリケーションにデータの出力を要求する」という指令を与える方法です。後者の方法は「遅延レンダリング」と呼ばれており、Excelではリッチテキストをコピーする際に遅延レンダリングを用いているとのこと。

Windowsはクリップボードの中身を取得する「Get­Clipboard­Data」が実行された際に、データが返ってくるまで最大30秒待機しますが、待機時間が30秒を超えると「Get­Clipboard­Data」からは失敗を意味するNULLが返ってきます。つまり、上記のユーザーの場合はExcelデータのサイズが大きすぎるため遅延レンダリングに30秒以上の時間がかかり、コピー&ペーストに失敗したというわけです。

チェン氏は「30秒」というタイムアウト時間を延長する方法を今後解説予定とのことです。

この記事のタイトルとURLをコピーする

・関連記事
極限までコピペに特化した「究極のプラグラミングツール」が爆誕 – GIGAZINE

「ウィンドウを常に最上部に表示」「ウィンドウレイアウトをカスタマイズ」「行方不明のマウスポインターを強調表示」などMicrosoft公式の小技アプリ集「PowerToys」を使ってみた – GIGAZINE

見落とされがちなWindows 10の便利機能5選 – GIGAZINE

Windows 10から削除すべき「役立たずのゴミ」機能まとめ – GIGAZINE

Windowsの「タスクマネージャー」を開発した本人が直々に使い方や知られざる機能を伝授 – GIGAZINE

・関連コンテンツ

2022年06月10日 08時00分00秒 in ソフトウェア, Posted by log1o_hf

You can read the machine translated English article here.

Source

タイトルとURLをコピーしました