DllImport("QCall")」とは何ですか?
質問
.Netライブラリの多くのメソッドは、ネイティブコードで実装されています。フレームワーク自体に由来するものには
[MethodImpl(MethodImplOptions.InternalCall)]
. アンマネージド DLL に由来するものには
[DllImport]
(例えば
[DllImport("kernel32.dll")]
). 今のところ異常はありません。
しかし、書き込み中に
を書きながら、別の質問に対する回答
でマークされた多くのメソッドがあることを発見しました。
[DllImport("QCall")]
. これらは、.Net の内部実装のようです (例.
GC._Collect()
).
私の疑問は、具体的にどのような
[DllImport("QCall")]
は何を意味するのでしょうか?の違いは何ですか?
[DllImport("QCall")]
と
[MethodImpl(MethodImplOptions.InternalCall)]
?
どのように解決するのですか?
これは古いスレッドです。CoreCLRは現在GitHubでオープンソース化されているので、もし誰かがまだ答えを探しているのなら、ここで 公式ドキュメント :
<ブロッククオートマネージドコードからネイティブコードへの呼び出し
マネージド コードから CLR に呼び出すための 2 つのテクニックがあります。FCall は、CLR コードに直接呼び出すことができ、オブジェクト操作の面で多くの柔軟性を提供しますが、オブジェクト参照を正しく追跡しないために GC ホールを引き起こしやすくなります。QCallは、P/Invokeを介してCLRに呼び出すことができ、FCallよりも誤って使用することがはるかに困難である。FCallは、マネージドコードでは、MethodImplOptions.InternalCallビットが設定されたexternメソッドとして識別されます。QCallは、通常のP/Invokeのように見える静的なexternメソッドですが、"QCall"と呼ばれるライブラリに対するものです。
JITヘルパーを実装するためのHCall(ヘルパーコール)と呼ばれるFCallの小さなバリエーションがあり、多次元配列要素へのアクセスや範囲チェックなどを行うためのものです。HCall と FCall の唯一の違いは、HCall メソッドは例外スタックトレースに表示されないということです。
そして、小見出しで続きます。
を例示しています。
関連
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み] WPFで角丸ボタンを作成する/作るには?
-
[解決済み] "SSL/TLSセキュアチャネルの信頼関係を当局と確立できませんでした "の解決方法
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] 埋め込みリソーステキストファイルの読み方
-
[解決済み] MemoryStreamから文字列を取得する方法は?
-
[解決済み] Math.Round(2.5)はなぜ3でなく2を返すのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み] ファイル *.mdf をデータベースとして添付できません。
-
[解決済み] アセンブリから型を読み込めなかったエラー
-
[解決済み] Microsoft.NETFrameworkとMicrosoft.NETFramework64の違いは何ですか?
-
[解決済み] DockPanelを空きスペースいっぱいに表示させる方法
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] .NET Framework 4 マルチターゲティングパックがアンインストールできない
-
[解決済み] WinSCP 応答待ちタイムアウト
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] MemoryStreamから文字列を取得する方法は?