adminsharedセクションをつかう以下のコードで変数iをプロセスで共有できる。すべてのプロセスがなくなると消える。adminWinformのTextコントロールにはvalidatingとvalidatedイベントがある。validatingイベントTextコントロールがフォーカスを失ったり、親のフォームが閉じられようとすると呼ばれる。引数はCancelEventArgsであり、Cancelにtrueを設定することで、キャンセルすることができる。キャンセルされると、フォーカスが移動できなかったりする。validatedイベントvalidatingが成功すると(Cancelされなかった)呼ばれる。validatingは上記のような状況で呼ばれるので、そのときに呼ばれる。Text変更時にはvalidatingもvalidatedも呼ばれない。admin注意:これをやると壊れます。Dellのinspiron-620sというマシンをWindows10で使っていたのだが、それに積んでいるHDDがLED点灯状態になる問題が発生した(普通は点滅する)。この現象に伴ってファイルが読めなくなる(読み込むと固まる)などの問題が発生したため、HDDのファームウェアのアップデートをしてみることにした。HDDはST31000524ASという型番、検索するとDellでファームウェアのアップデートが提供されていたので実行してみることにした。圧縮ファイルに含まれる、B7000100.exeというファイルを実行すると、おそらくファームウェアを適用したあとに再起動したのだが、HDDからブートできなくなってしまった。このマシンにはSSDも積んでいてそこからもブートできるようになっていたので、起動することはでき、HDDの中身も無事みたいだが、HDDが1つしかない場合は、Windowsを再インストールすることになると思う。SSDからHDDで起動したあとにEasyBCDを使って再びHDDにBCDを書き込んで、HDDからブートできるように戻すことができた。このソフトはブート時に使ったBCDの情報を表示するようだ。ここでE:\になっているのはシステムで予約済みの領域で、bootやEFIなどのフォルダとbootmgr,BOOTNXTなどのファイルがある。ここにBCDを書き込むことでもとに戻すことができた。LED点灯問題は今のところ起きていないが、しばらく様子を見ないとわかない。更新前のファームのバージョンは確認しなかったが、更新後の情報はHWiNFO64でみると以下のようになっていた。上記のファームウェアアップデートをしても同じ問題が再現したのでファームウェアの問題ではないようだった。その後色々しらべるとSEAGATEからディスク診断修復ツールであるSeaToolsというものがあるとわかったのでこれを試してみることにした。ベーシックテストでもエラーはでなかったのでHDDにエラーはないものと思われる。その後いろいろ調べてみると、同じような問題でDVDドライブがおかしくなるとLED点灯が起こるとあったので調べてみると問題が発生しているときはDVDドライブが見えなくなっていることがわかった。起動時から見えないときもあるし、起動してしばらくしてから見えなくなることもある。これが原因かもしれないので更に調査してみようと思う。endl;ostream_iteratorとは=で渡された値をコンストラクタで渡された出力ストリームに追加していく。コンストラクタの2番めの引数はデリミタを指定する。=でストリームに追加したあとにこの値も追加する。デフォルトでは何も追加しない。++演算では何もしない。これにより下記のcopyで役に立つ。"osstest3";}上のコードは以下のようにコンソールに出力される。osstest3123456123osstest1osstest2osstest3copyとは第一引数と第二引数のイテレータで入力範囲を指定する。第三引数で出力イテレータを指定する。入力出力とも++で一個ずつずらしていって=でコピーする。vs.end(),vs2.begin());}ostream_iteratorの++は何もしないで=で値をストリームに追加する。adminCreateProcessでブレークポイントCreateProcessでブレークポイントを設定するには、新規ブレークポイントで以下のように入力する。{,,kernel32.dll}_CreateProcessW@401{,,kernel32.dll}_CreateProcessW@40kernel32.dllはこの関数を実装しているDLL40、はこの関数の引数のバイト数だと思われる。このやり方でうまくいかない場合プログラムの最初の方で適当なブレークポイントを設定し、以下のコードの結果を調べる。(void*)CreateProcess;このアドレス値でブレークポイントを設定する。ShellExecuteExなどはCreateProcessを他のスレッドで呼ぶらしい。その場合はデバッグの場所でメインスレッドを指定する。スタックトレースがうまく表示されないときはシンボルのロードをする。関数ブレークポイントの設定で以下のように入力する(アンダーバーと@以下を削除する)。Complete恒久的に有効にする上記の内容を書いたファイルをC:\Users\\Documents\WindowsPowerShell\profile.ps1におく。adminCygwinやmsysなどのgitからpullすると実行できないことがある。その場合は以下のコマンドで実行属性をつける。admin/JMCを削除デバッグモードでのデフォルトのコンパイルフラグに/JMCが追加されていて、これが有効になっているとstdのソースコードにステップ・インできない。Codeはモジュールごとに区分けしていると思うので、どうでもいいはず。Win32APIのコールバックコールバック関数(これは自分で定義したもの)のデバッグを効率良く行うには/JMCを有効にしたほうが良い。このフラグを有効にすると、コールバックを引数にするAPIを呼んだときに、そのコールバックにステップ・インしてくれる。