ファイルのある領域から別の領域にデータを移動する必要があります。現在、私はバイトを読み、それを書き戻しています。しかし、可能であれば、DMA転送を高速化するのがいいかと思います。私はC#にいるが、安全ではない、p/invoke関数が受け入れられる。DMAを使用したファイル内データコピー
2
A
答えて
3
普通のファイルストリームを使用してあるファイルから別のファイルにコピーすることによって '事故によって' DMAを実行していません。 DMAは、いくつかの場所でバックグラウンドで使用されています(たとえば、FileStreamを使用してディスクからRAMに転送するなど)が、C#で直接ファイルからファイルへのストリームのコピーを処理できません。
DMA自体はかなり複雑で低レベル言語のネイティブです。私はthis documentを指しています。すべてのコード例はCとasmにありますので、C#には直接適用できません。
DMAは、マザーボード上の別のチップであるあなた(プログラマ)はI/Oボード間のデータ転送 の負荷を軽減することができます(通常はインテル8237チップ があります)。 DMAは実際には「ダイレクトメモリアクセス」の略です。 DMAの使用例は、バックグラウンドで サンプルを再生するSound Blasterの能力です。 CPUは、サウンドカードとDMAを設定します。 DMAに「go」と指示すると、RAMからのデータを単にシャッフルして というカードにします。これはオフCPUで行われるため、CPUはデータ転送中に の他の処理を実行できます。
DMAは、ポートによってアクセスされるチャネルシステムを使用します。通常、これを行うにはasmを使用します。たぶんあなたは有用な情報hereまたはhereを見つけることができます。
代わりに、OSに転送を処理させることもできます。単にFile.Copyを使用します。
関連する問題
- 1. STM32F103マイクロコントローラ(Cortex-M3)を使用したDMA開始アドレスの再プログラミング
- 2. squirrelmailデータコピー
- 3. DMA、割り込みを使用したプロセッサ/マイクロコントローラのプログラミングの書籍
- 4. DMA転送データレート
- 5. ローカルデータベースからリモートデータベースへのデータコピー
- 6. DMAを使用してVisual Boy Advance(VBA)に画像をロードする
- 7. DMAを使用してLinuxデバイスドライバからハードドライブに書き込む方法
- 8. 同時DMAユーザメモリに
- 9. LinuxカーネルのコンテキストでDMAマッピングとDMAエンジンとは何ですか?
- 10. Jythonを使用した標準PythonモジュールのImportError(JARファイル内)
- 11. hadoop mapreduceを使用したファイル内の相互単語
- 12. 単純な.htaccessファイルを使用した内部サーバーエラー(500)
- 13. Javaファイル内のコードを使用してJavaファイルをコンパイルする
- 14. アンドロイド携帯電話アプリケーションのデータコピー
- 15. HypersonicからSqlサーバー2008へのデータコピー
- 16. OpenGLのVBO DMA配列
- 17. Android Bluetooth OBEXを使用して専用/内部ファイルを送信
- 18. 名前vbsを使用してデータベース内のレコードを使用しているファイル
- 19. コード内のコンバーターを使用したDataTemplate
- 20. 内部クラスを使用したテンプレートコンパイルエラー
- 21. MaterialUIを使用したツールバー内のアバター
- 22. サーバーを使用したアプリ内購入
- 23. comsupp.libを使用した内部リンカーエラー
- 24. ジャージテストフレームワークを使用したリソース内モックサービス
- 25. HQLを使用した内部結合
- 26. iOSブロックフォーマットを使用した内部コンパイルエラー
- 27. エミュレータを使用した内部ストレージアクセスandroid
- 28. php親フォルダ内のファイルを使用
- 29. HAL SPI DMA動作中に受信したバイト数を確認します。
- 30. JEditorPaneを使用したHTMLファイルのレイアウトコンテンツ
可能な場合、memcpyは自動的にDMA転送を行いますか?もしそうなら、おそらくメモリマップされたファイルを使用してmemcpy(またはmemmove)を呼び出すことができます。 – Fantius
または私は既にDMA転送をしていると思いますが、それはわかりません。この場合でも、私は1つではなく2つの転送を行う必要があります - データを読み込んでそれを書き込むことです。 1つの転送にする方法はありますか? – Fantius