davidfoxのプロフィール
- ベストアンサー数
- 21
- ベストアンサー率
- 58%
- お礼率
- 66%
- 登録日2006/05/03
- [C#][FX]DLLを利用した共有メモリの動作
こんにちわ。 外国為替取引のFXに利用するプログラムを作成しています。 その中で、 C#のプログラムAと MQLという言語によるプログラムBにおいて、 共有メモリ読み書きを行うDLLを利用して、 (1)Aの結果を共有メモリに書き込み→Bで受け取って処理。 (2)Bの結果を共有メモリに書き込み→Aで受け取って処理。 という仕組みを作成しています。 (2)はできたのですが、(1)がうまくいきません。 知見をお持ちの方アドバイスいただけませんでしょうか。 以下詳細でございます。 ●相談内容 共有メモリ書き込み時に以下エラーが発生し、書き込みができない。 「保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。」 ●ソース(一部抜粋。InitializeとRunは基盤システムからコールされます。) 【C#ソース】 using System.Runtime.InteropServices; using System; [DllImport("MemMap.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern string SetMemString(string tag, string msg); public bool Initialize() { try{ Console.Write("try01"); SetMemString("TEST", "1"); Console.Write("try02"); SetMemMethod(); }catch(Exception e){ Console.Write(e.Message); Console.Write(e.StackTrace); } return true; } public void SetMemMethod(){ SetMemString("TEST", "2"); } public void Run(){ try{ Console.Write("try03"); SetMemString("TEST", "3"); }catch(Exception e){ Console.Write(e.Message); Console.Write(e.StackTrace); } } } } 【コンソール】 try01 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。 場所 test.Main.SetMemString(String tag, String msg) 場所 test.Main.Initialize() try03 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。 場所 test.Main.SetMemString(String tag, String msg) 場所 test.Main.Run( 【DLL】 MT4_EXPFUNC const char* __stdcall SetMemString(char *tag,char *msg) { /*static*/ string ret = ""; bool create = false; HANDLE hMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, tag); if (!hMap) { hMap= CreateFileMapping((HANDLE)0xFFFFFFFF , NULL , PAGE_READWRITE , 0 , 1024 , tag); q.push(hMap); create = true; } LPSTR strAllCmd =(LPSTR)MapViewOfFile(hMap , FILE_MAP_WRITE , 0 , 0 , 0); lstrcpy(strAllCmd , msg); FlushViewOfFile(strAllCmd,0); UnmapViewOfFile(strAllCmd); if(!create) CloseHandle(hMap); return(ret.c_str()); } ●詳細 try01直後の初期化メソッド(Initialize)で直接コールするSetMemStringは問題なく出来ており、プログラムB側で読むことができていますが、 try02直後の初期化メソッド(Initialize)でコールするメソッドの中のSetMemStringと try03直後のメイン処理(Run)の中のSetMemString でエラーが発生します。 try02はソースの綺麗さを保つために別メソッドに切り出したいだけなので、 最悪初期化メソッドに直書きすればよいですが、 メイン処理なので、try03でエラーが発生するのはなんとしても解決したいです。 try01で呼べていることからDllImportのスコープがうまくできていないのでは? と考えています。 継承元のExpertクラスはソースが隠蔽されていて、わかりませんが、 何かアドバイスいただけませんでしょうか。よろしくお願いします。
- 作曲ソフトを開発している日本の企業はありますか?
今わたしは、情報系の専門学校でJavaやC#などのプログラミングや、情報処理の基礎から応用までの知識などを学んでいます。卒業したらソフトウェア開発会社に就きたいと思っていたのですが、ソフトウェア開発会社にもいろいろなジャンルがあり、わたしはその中でも、エンタメ系というのでしょうか、音楽や動画やデザインなどと関連したソフトウェア開発の企業に就きたいと考えています。その中でも、わたしは音楽と関連したソフトウェア開発会社で働きたいと考えました。そこで音楽とソフトウェア開発で思い浮かべたものが、自分でも趣味で使っている作曲ソフトでした。そこでまず、 (1)日本で作曲ソフトを開発している企業、作曲ソフトでなくても音楽と関連しているソフトウェア開発企業を教えて頂きたいです。 (2)そういった会社の中で自分の学んできたプログラミングや情報の知識が活かせるのかを教えて頂きたいです。 (3)実際にどんな仕事内容なのかをもできれば教えて頂きたいです。 回答よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- j286zo1o
- 回答数3
- 開発と開発の合間、ブロジェクトの区切りって
開発と開発の合間、ブロジェクトの区切りって な~んかやる気でない時ってないですか??? 今まさにそんな感じで、開発環境の整備とか、やることは沢山あるのですが、イマイチやる気が出ない・・・。 そんな時のモチベーションアップ方法を教えてください!!
- 締切済み
- その他([技術者向] コンピューター)
- Hanagefactory
- 回答数2
- 外部アプリケーションの起動について
Windows 7 32ビット機で、VC++ 2010 Express を利用して Windowsフォームアプリケーションを作成しております。文字コードはマルチバイト文字を選択しました。 アプリケーション自体は、メニュー画面にいくつかのボタンを設け、押下すると所定の実行ファイルが起動するといった非常に簡単なものです。 外部アプリケーションの起動方法ですが、ShellExecute()関数またはCreateProcess()関数を使用するのが一般的との事ですので、今回はCreateProces()関数を使うことにしました。大きな理由は、アプリケーションの実行待機機能が使いたかったためです。 とくに問題なくビルドが完了し実行してみたところ、殆どのアプリケーションは起動できるのですが、ひとつだけ起動できないものがありました。正確には、起動できないというよりは、タスクマネージャーにより起動されていることは確認できるのですが、バックグラウンドで動作するかのように肝心の画面が表示されません。 この状態になると(主プロセスである?)メニュー画面の制御がきかず(応答なし状態)、タスクマネージャーにより強制終了すると、ここでやっと表示されなかった画面が表示されるといった具合です。 何故このような現象が起こるのか、どのようにすれば解決するのかわかりません。誠に恐れ入りますがご教示賜りたく、何卒よろしくお願いいたします。 なお、下記にご参考となり得る情報を記載します。 1. 関数部分の記述は以下のとおりです。 rVal = CreateProcess ((LPTSTR)Fname, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); Fnameは、フルパスのファイル名がセットされたchar型変数で、ここでは第1引数に記述していますが、第2引数に記述した場合でも結果は同じです。 2. 上記の(LPTSTR)の記述はおまじない的なもので、この記述が無くても挙動は変わりません。どこかの記事で、Windows 7 で動作しない場合の対応と紹介されていましたので。 3. 実行ファイルは、R社のプリンタドライバーのインストーラ(.exe)です。 4. Z社のプリンタドライバーのインストーラやその他のアプリケーション(.exe)は問題なく動作します。 5. メニュー画面には複数のボタンがありますが、対応するロジックはすべて同じで、Fnameにセットされた値のみ異なります。 6. ShellExecute()関数を利用すると、問題なく動作します。
- 公務員の国民年金未納について
はじめに、恥ずかしながら年金や保険、公務員の場合などまるで無知なので、質問に不備が多々あるかと思います。申し訳ありません。 私の主人は消防士です。(今年28歳) 高校卒業後試験に落ち、翌年消防士の採用試験自体が無かったため一年アルバイトなどをして、その次の年に公務員試験に受かりいまに至ります。 主人と知り合ったのは4年弱前なのですが、一度年金事務所から何か通知のようなものがきておりました。その頃はお付き合いをしていただけなのでなんの通知か詳しく聞かなかったのですが、おそらく試験に落ちてアルバイトをしていた期間の国民年金?かなにかの未納のお知らせだった気がします。 主人はその通知を見た後、特に年金事務所に行ったり支払いをしたような素振りは無く、通知もそれ以降きてないように思います。 そして結婚して今更になり、未納があるとどうなるのか気になり調べたりしていました。 主人はなんとなく楽観的で、別に払わなくても年金は貰えるって感じなのですが、未納のままだと公務員でももちろん減額されますよね?(一年あたり480分の○ヶ月分とかいうのはみました)減額は基礎年金?とかいう部分からでしょうか? 払うに越したことはないのは分かりますが、主人の言うように別にほっといてもなんとかなるのでしょうか? いまは10年まで遡って納められる特別措置期間だということも知りました。 近々頼んで年金事務所に行こうとは思っているのですが、取り急ぎ、詳しい方がいらっしゃいましたらご教授いただければ有難いです。
- ベストアンサー
- 国民年金(基礎年金)
- miyukiss119
- 回答数3