問題タブ [marshalling]

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 投票する
3 に答える
1500 参照

c# - 管理されていないC++暗号化文字列をC#バイトに[]

文字列値を非ascii文字を含む暗号化された文字列に暗号化するC#クラスライブラリから呼び出すアンマネージCdllがあります。データを取得してそのバイナリ値をファイルに書き込む必要がありますが、C#はテキストを。stringではなくとして扱いますbyte[]

暗号化された値には通常、特殊文字(、、など)が含まれ\rます\O。あるタイプのコードセット(ascii、utf-7、utf-16)を使用して返された文字列をC#に変換すると、実際のバイナリ表現ではなく、Windowsが解釈する値として特殊文字の値が書き込まれます。

私の質問は、アンマネージdllからbyte[]文字列ではなくデータをプルして、ファイルに書き込むことができるようにするにはどうすればよいBinaryWriterですか?

ありがとう。

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

c# - MarshalAsAttribute Sizeconst .NET

C#を使用して、実行時にMarshalAsAttributeのSizeconst値を取得する方法を知っている人はいますか?

例えば。10の値を取得したいと思います。

0 投票する
3 に答える
979 参照

.net - IntPtr から値をマーシャリングするメソッドの単体テストを作成できますか?

属性の値を含むメモリ位置に IntPtr を返すネイティブ ライブラリを使用しています。属性の型が何であるかを知っており、ポインターが指すメモリから値をマーシャリングする (IntPtr と属性の型を取得する) メソッドがあります。このメソッドは、Marshal.ReadInt32 を呼び出すか、一連のバイトを読み取って double に変換するか、Marshal.PtrToStringUni などを使用して文字列を読み取ります。このメソッドの単体テストをいくつか書きたいのですが、どうすればよいかわかりません。メソッドに渡す IntPtr の作成について。NUnit を使用していて、モック フレームワークを使用できません。

0 投票する
3 に答える
2819 参照

c# - C# で Int/short/byte 構造のバイト表現を取得する

FieldInfo オブジェクトとオブジェクトが与えられた場合、フィールドの実際のバイト表現を取得する必要があります。int,Int32,uint,shortフィールドがどちらかなどであることを知っています。

実際のバイト表現を取得するにはどうすればよいですか? BinaryFormatter.Serialize は役に立ちません。必要以上の情報が得られるからです (型名なども記録されます)。このMarshalクラスには、バイト配列を使用する機能がないようです (ただし、何か不足している可能性があります)。

ありがとう

0 投票する
3 に答える
2590 参照

c++ - vb.net byte[] から C++ char* へ

パラメータの 1 つとして char* を期待するアンマネージ C++ dll を呼び出しており、byte[] をそれにプッシュしたいと考えています。プロジェクトは VB.NET で書かれています。

これにはどのような種類のマーシャリングが機能しますか?

0 投票する
5 に答える
14231 参照

c# - C++ CLI 構造体からバイト配列へ

ワイヤ形式のパケットを表す構造があります。この構造体には、他の構造体の配列があります。ほとんどのケースでこれを非常にうまく処理する汎用コードがありますが、この構造体の配列のケースはループのマーシャラーをスローしています。

配列を持つ構造体へのポインターを取得できないため、アンセーフ コードは使用できません (ぐーん!)。

このコードプロジェクトの記事から、次のような C++/CLI を含む非常に優れた一般的なアプローチがあることがわかります...

今、構造があれば -> バイト配列 / ライターのバージョンが設定されます! 前もって感謝します!

0 投票する
3 に答える
5985 参照

c# - C# とアンマネージ C ライブラリ間の相互運用

DLL に小さな C ライブラリがあり、そのメソッドをいくつか呼び出す必要があります。

ポインターといくつかの構造体を使用しますが、それ以外は非常に単純です。問題は、私が管理されていない世界との .NET の相互運用性について十分に知識がなく、これまでの試行でメモリ アクセス違反の例外が発生し続けていることです (おそらく、ポインターを正しく取得していないため)。

これにアプローチするための最良の方法について、誰かが私にいくつかの指針を教えてくれますか?

ありがとうございました

0 投票する
3 に答える
4386 参照

c# - 構造体の配列をマーシャリングするためのヘルパー関数(ポインター付き)

これは、C#の相互運用に関する最も一般的な質問のようですが、実用的な解決策を見つけるのは難しいようです。

C#で行列データ構造の配列を割り当ててC DLLに渡し、データをいっぱいにして呼び出し元に返して処理する必要があります。

Web上のさまざまなページに基づいて、データとメモリをC#からC ++に取り込むことができたようですが、そうではないようです...

コードは次のとおりです。

助けてくれてありがとうShyamal


私は次のようなC++構造を持っています

これをC#で宣言します

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

interface - SAP .NET コネクタ: .NET 型のマーシャリング中にシステム例外がスローされる

私のアプリは、非常に多くのデータを SAP に送信します。これを行うために、SAP テーブル オブジェクトを作成して送信します。このエラーはある程度定期的に発生しますが、確実ではありません。

奇妙なことは、これが毎回起こるわけではないということです。また、「20081219」という.NETタイプは、私が渡しているデータ(日付)であり、タイプではありません。そのフィールドのタイプは だと思いますRFCTYPE.RFCTYPE_TIME

この断続的なエラーのトラブルシューティング方法に関する提案はありますか? SAP RFC への呼び出しの間にクリアしなければならない状態はありますか?


アップデート:

要求どおり、SAP を呼び出すコードは次のとおりです。

複数のスレッドが何らかの方法で同じ接続を使用している可能性があると考えています。代わりに使用SAP.Connector.GetNewConnectionしても何も変わりませんでした。


アップデート:

この問題は、単一のスレッドを実行しても発生するようです! どうしたんだ??

接続プールを無効にして、それが修正されるかどうかを確認する方法はありますか?


アップデート:

@Igal Serbanの答えは私にとってはうまくいっているようです。明日の朝にログをチェックして、(できれば) 報奨金を授与します! 本当にありがとう。


アップデート:

要求どおり、私の librfc32.dll のバージョンは 6403.3.78.4732 です。

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

.net - 文字列配列を.NETのLPCWSTRに変換して、Win32 API関数に渡すにはどうすればよいですか?

Win32 API関数に渡すために文字列配列をLPCWSTRに変換する必要があるC#コードがあります。マーシャルクラスには、それを簡単にするものは何も見つかりません。誰かがそれを行う方法を知っていますか?