問題タブ [istorage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
886 参照

c++ - IStorage の VCL 代替

はじめに、私は Borland C++ と VCL を使用しています。

単一のファイルとしてディスクに保存でき、プログラムで列挙、アクセス、操作できるバイナリ データの複数の名前付き BLOB を格納できる、ある種の構造化ストレージ オブジェクトが必要です。

IStorageインターフェイスは私が望むものに近いようですが、とりわけ TStream (VCL) を IStream に変換するのは厄介であり、TIniFile のように既に利用可能な VCL のものを使用するより単純なソリューションでなければならないため、VCL スタイルのソリューションを好みますが、バイナリデータ。

バイナリ データのブロブは非常に大きく、XML で使用するために正しくエンコードされていれば、まったく効率が悪いため、XML は使用したくありません。

すべての提案を前もって感謝します。

0 投票する
1 に答える
1235 参照

c# - IStorage の複合ファイル実装はスレッドセーフですか?

C# からの ISt​​orage の複合ファイル実装 (StgCreateDocfile) を使用しています。

自分で読み取りと書き込みを同期した場合、複数のスレッドから 1 つの ISt​​orage / IStream インスタンスにアクセスしても安全ですか? または、ここで問題になる可能性のある COM の問題はありますか?

たとえば、EnumElements を安全に呼び出してストレージ内のすべてのストリームを取得し、同時に (別のスレッドから) 新しいストリームを作成して書き込むことはできますか?

私は実装用のストレス テストを既に作成しており、問題はありませんでしたが、100% 確信する必要があります。MSDN ドキュメントでこの情報を見つけられませんでした。

0 投票する
2 に答える
1730 参照

c# - C# から IStorage/IStream を使用して Windows エクスプローラーにドラッグ アンド ドロップする

私はあまりにも長い間、単純な機能のように聞こえるものに取り組んできました。アイデアは、私は TreeView を持つアプリケーションを持っているということです。このツリービューは、Windows エクスプローラーと同様に、ファイルとフォルダーに編成されたデータベースの内容を表します。したがって、ユーザーがこれらのファイル/フォルダーをアプリから Windows エクスプローラーにドラッグできるようにすることは理にかなっています。

IStreamファイルをドラッグする場合は を使用するかIStorage、フォルダーをドラッグする場合は を使用することにしました。非常に長い時間をかけて、Win32/COM について知りたいと思っていた以上のことを学んだ後 (そして、ここで非常に親切な人からの助言を受けて)、ついにそれを手に入れた、IStreamまたはIStorage作成しました。

次に、これを Windows エクスプローラーに渡しIStreamたり、オフにしたりするには、 . もちろん、 medium.tymed は、どちらを使用しているかに応じて または になりますが、私が理解しているように、は へのポインターでなければなりません。IStorageSTGMEDIUMIStreamIStoragemedium.unionmemberIStream/IStorage

私は固定されたキーワードを使用してみました(もちろん、それはblittableではありません)、爆破されたものをバイト配列に変換しようとしましたが、それを実現する方法を思いつくことができませんでした。 GCHandle を使用して固定する (ただし、まだ blittable ではありません)、および機能しなかった他のいくつかのこと。

私の質問は次のとおりです: と が与えられIStorage sた場合、Windows エクスプローラーが満足してドロップを受け入れるようにするSTGMEDIUM mにはどうすればよいですか?m.unionmember

0 投票する
4 に答える
3057 参照

c# - C#でOLEIStorageファイルハンドルを解放する

https://docs.microsoft.com/en-us/archive/blogs/brian_jones/embedding-any-file-type-like-で説明されているOLE手法を使用して、PDFファイルをWord文書に埋め込もうとしています 。 pdf-in-an-open-xml-file

プロジェクト全体が1つの場所にあり、1つの障害物を除いてほとんどそこにあるように、C#で提供されるC++コードを実装しようとしました。生成されたOLEオブジェクトのバイナリデータをWordドキュメントにフィードしようとすると、IOExceptionが発生します。

IOException:別のプロセスによって使用されているため、プロセスはファイル'C:\ Whereever\Whatever.pdf.bin'にアクセスできません。

.binファイル(以下の「oleOutputFileName」)を開くファイルハンドルがあり、それを取り除く方法がわかりません。私はCOMについて多くのことを知りません-私はここでそれを翼にしています-そして私はファイルハンドルがどこにあるか、またはそれを解放する方法を知りません。

これが私のC#化されたコードがどのように見えるかです。私は何が欠けていますか?

更新1:「。binファイル」が意味するファイルを明確にしました。
更新2:私が取り除きたいものは使い捨てではないので、私は「使用中」のブロックを使用していません。(そして完全に正直に言うと、ファイルハンドルを削除するために何をリリースする必要があるのか​​わかりません。COMは私にとって外国語です。)

0 投票する
1 に答える
267 参照

ms-office - Office 2007 ドキュメントをメモリ ストレージから開く - どのように?

私は C++ 開発者であり、(ILockBytes を介して) インメモリ ストレージから Office 2007 以前のドキュメントを開くために IStorage インターフェイスを多用したアプリケーションの更新に取り組んでいます。

まだ私をフォローしている場合は、新しい Office ドキュメント形式が IStorage コンテナーと互換性がないことをご存知でしょう。私が更新しようとしているアプリケーションは、すべての Office アプリケーションが持つ IPersistStorage インターフェイスに依存しており、書かれたコードは IPersistStorage の load メソッドを呼び出して、IStorage インターフェイスからドキュメントを読み込みます。

質問は次のとおりです。

メモリ内コンテナーから Office 2007 ドキュメントを読み取るために使用できる COM インターフェイスの種類は何ですか?

0 投票する
0 に答える
455 参照

winapi - IStream から IStorage を開く

構造化ストレージ ファイルのプロパティ ハンドラーを実装しており、分離、低速転送の処理などの利点を考慮して IInitializeWithStream で初期化したいと考えています。しかし、IStream から IStorage を開く明確な方法がわかりません。ファイル全体をグローバル mem にロードしたくありません。ドキュメントには、Initialize に渡された IStream に ILockBytes が必ず実装されているかどうかが記載されていません。

IInitializeWithFile の実装は簡単ですが、分離することはできません。

この ISt​​ream から IStorage を取得する方法について何か考えはありますか?

注意すべき点として、私はこのファイル タイプを所有していませんが、一般的な作業では、これらの追加のプロパティを公開しておくと役立ちます。

0 投票する
1 に答える
73 参照

sqlite - Firefox拡張機能executeAsync一度に15行のみを返します

sqliteデータベースの読み取りと書き込みを行うFirefox拡張機能を開発しています。非同期クエリを実行してデータベースから20行をフェッチすると、データの受信を処理するコールバック関数が2回呼び出されます。1回目は15行を返し、2回目は最後の5行を返します。これは標準値ですか。もしそうなら、この値を変更できますか?

0 投票する
1 に答える
274 参照

c++ - MAPIIMsgStoreをIStream実装に保存します

IMAPISessionメソッドを使用してpstmsgストアを作成しようとしています。

これは、船首で提供されるPR_PST_PATHプロパティを使用します。

しかし今、私はメモリ内のpstファイルを開く必要があります。つまり、IStreamインメモリストリーム実装を使用します。誰かが似たようなことをしようとしましたか?

0 投票する
1 に答える
660 参照

mapi - IStorage の使用時に EML から MSG への変換が失敗する

EML を MSG ファイルに変換しようとしています。IStorage オブジェクトに mapi オブジェクト IMessage を作成します。クラス ID CLSID_Message を IStorage オブジェクトに割り当てます。EML ファイルを解析し、プロパティを読み取り、それらを mapi IMessage オブジェクトに割り当てます。mapi IMessage オブジェクトで Save() を呼び出します。IStorage オブジェクトで Commit() を呼び出しました。生成された MSG ファイルを Outlook で読み取ることができませんでした。そこで、以下に説明する別の方法を試しました。

IStorage に 2 番目の IMessage オブジェクトを作成しました。最初の IMessage オブジェクトで IMessage::CopyTo() を呼び出し、IStorage オブジェクトでホストされている 2 番目の IMessage にデータを転送します。生成された MSG ファイルが再び OutLook で読み取れなくなりました。

PST 内に IMessage オブジェクトを作成すると、生成された MSG ファイルを OutLook で読み取ることができます。IStorage で IMessage を作成すると、何かが起こっていると思います。IMessage オブジェクトから PR_SUBJECT を読み取ることができたので、EML->MAPI 変換が行われました (このコードは何年も機能しています)。

ここにコード

このようなことを経験したことがある方がいらっしゃいましたら教えてください。

ありがとうございました