新米と秋刀魚のわた焼き お刺身用の秋刀魚を買いました。1尾250円です 3枚におろして、秋刀魚のわたに酒、味醂、醤油で調味して1時間ほど漬け込み、グリルで焼きました 秋刀魚のわた焼き わたの、苦味が程よくマイルドに調味され、クセになる味わいです 艶やかな新米と一緒に 自家製お漬物 土…
すべての Microsoft 製品 Microsoft 365 Office Windows Surface Xbox セール サポート ソフトウェア Windows アプリ OneDrive Outlook Skype OneNote Microsoft Teams PC とデバイス Xbox を購入する アクセサリ VR & 複合現実 エンタメ Xbox Game Pass Ultimate Xbox Live Gold Xbox とゲーム PC ゲーム Windows ゲーム 映画とテレビ番組 法人向け Microsoft Azure Microsoft Dynamics 365 Microsoft 365 Microsoft Industry データ プラットフォーム Power Platform 法人向けを購入する Developer & IT .NET Visual Studi
Thread Pool Objects The first step in preparing a thread pool for use is to create one using the CreateThreadpool function, which is shown in Figure 2. The function takes a reserved parameter that must be NULL. If the function succeeds, it returns a PTP_POOL representing the newly allocated thread pool. If the function fails, it returns NULL, and GetLastError can be used to get extended error info
自分のプロセスのコマンドラインを取得するのは非常に簡単だ。main関数が存在するならargc, argvで取得できるし、そうでなければ、__argv, __argv, (__wargv/__targv)で取得することもできる。また、APIとしては、GetCommandLineというものもある。好んで使う理由は見あたらないけど。 しかしながら、リモートプロセスのコマンドラインとなると、とたんに敷居が高くなる。プロセスハンドルを持っていても、GetRemoteCommandLineというAPIは見あたらないのでどうしようもない。となると、考えられる方法としては、 CreateRemoteThreadなどで相手プロセス内でGetCommandLineを呼び出す 相手のプロセスのメモリを直接読み込む という2つのうちのいずれかを選択することになる。一つ目の案は、大げさすぎるのと、相手プロセスに送り
大手コンピュータ・メーカー勤務。入社以来10数年をソフトウェア開発の現場で過ごし,その後ソフトウェア品質部へ異動。現場への技術支援や品質教育開発などを主に行っている。「APIで学ぶWindows徹底理解」(日経BP社)などを執筆。 前回は,仮想メモリーの基本的な仕組みと,VirtualAlloc APIを使って,メモリーを動的に割り当てる方法について解説した。ページングを使用して,物理メモリーをプロセスの仮想メモリー空間にマップしている仕組みについては理解していただけたものと思う。今回は,この同じ仕組みを利用した,もう一つの重要な機能について説明する。それが「メモリー・マップト・ファイル」である。 ファイルを仮想メモリーにマッピングして読み書きする メモリー・マップト・ファイル(Memory-Mapped File)とは,名前からは想像しにくいかもしれないが,ディスク上のファイルのデータを
ローレイヤー勉強会いきたい。 誘ってもらった。いく。いまから楽しみ。 PCでTVみたい。 Vista(64bit)に対応してる製品は無いってヨドバシの店員さんがいってた。じゃあ、別マシン買うしかないね。 ノートPCない(あるけどCPUが300MHzぐらい。容量的にCygwinも怪しい)から新しいの欲しい。 ヨドバシで下見してきた。大きさ的に許容できるのは8.9〜12.1型までかな。これより小さかったり大きかったりすると、用途にあわない。ヨドバシなら10万程度で買えるが、機能や性能面でフィルタかけていけばもうちょい安く買えそう。買ったらチューナーも買い足してTV見よう。 秋葉原あたりで可能な限り安いPCIexp16のVGA買って2008でAero使えるようにしたい(カード加工しないといけないから高いのは怖い) 256GB/64bit/ファンありで4980円と手ごろなのを見かけた。型番をメモし
多くのWindowsアプリケーションは、次の画面のように、独立したウィンドウとして複数起動して利用できる。 しかし、Windowsアプリケーションを1度に1つしか起動されたくない場合もあるだろう。例えばアプリケーションを複数起動されると、処理が競合して不整合が発生するような場合だ。このようなケースには、ミューテックス(Mutex:MUTual EXclusion の略で「相互排除」という意味)と呼ばれる機能を利用して、アプリケーションの多重起動を禁止することができる。 ミューテックスとは? 「ミューテックスの機能」とは、複数のスレッドが共有リソースに同時アクセスする場合に、たった1つのスレッドのみが排他的にアクセスできるようにして、スレッドを同期化するための機能である。 ミューテックスは、最初の1つのスレッドがミューテックスを取得すると、2番目以降のミューテックスを取得しようとするすべての
こうですか?分かりません!>< WIN32のみのお話です。 スレッドって結構実装依存なのね…。 先にまとめ windowsは_beginthreadex推奨(CreateThreadはメモリリークの危険あり) _beginthread、_beginthreadexを呼び出すには、process.h をinclude _beginthreadexに入れられる関数ポインタは、__stdcall か __clrcall __stdcall は static WINAPI 〜 __clrcall は CLR系なので今回は未調査 非staticなメンバメソッド(__thiscall)を呼び出すには、ラッパをかぶせる→staticでないクラスメンバ関数を_beginthreadで実行させる方法。 - かせいさんとこ CreateThread C++では無くCの関数。 そのまま使うとメモリリークを起こす
CreateThreadを使ってはいけない、代わりに_beginthreadexを使いなさい。 という有名な掟がWin32のマルチスレッドの世界にはある。 理由は簡単だ。 マルチスレッドを想定していないCランタイム(CRT)関数は、大域変数を使うことを前提としているからだ。 errno, _doserrno, asctime(), ctime(), localtime(), gmtime(), mktime()などだけでなく、mallocやfreeも当然これに該当する。 C++のnew, deleteもmalloc, freeに依存している。 この問題を回避するために、マルチスレッド版のCRTでは、大域変数を格納するに必要なメモリ領域をヒープ上に確保して、このポインタをTLSに保存することで、スレッドセーフにしている。 この領域をスレッド終了時に解放するための割り込みを挿入するのが
Cランタイムライブラリに含まれている各種機能が登場したのは1970年代。 その頃はスレッドをサポートしているOSが無かったので、スレッドセーフでない機能も含まれている。 (例えばグローバル変数のerrnoや標準ライブラリ関数のstrtokなど) Cランタイムに含まれるスレッドセーフでない機能をスレッド内で安全に使う為には、 ・スレッド生成時に、そのスレッド専用にCランタイムライブラリ用のメモリ領域を確保する。 ・スレッド内でスレッドセーフでないCランタイムの機能が使われたら、上記で確保したメモリ領域を使う。 ・スレッド終了時に、スレッド生成の時に確保したメモリ領域を開放する。 というような感じの処理をする必要がある。 _beginthreadexはCreateThreadのラッパー関数で、上記のような処理を内部で行なってくれる。 Cランタイムライブラリ特有の事情でこうなっているので、Vis
TOP/ プログラミング/ Win32 API Programming tips PROCESSENTRY32構造体は、スナップショット後のプロセス一覧を取り扱うためのものである。 typedef struct tagPROCESSENTRY32 { DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; ULONG_PTR th32DefaultHeapID; DWORD th32ModuleID; DWORD cntThreads; DWORD th32ParentProcessID; LONG pcPriClassBase; DWORD dwFlags; TCHAR szExeFile[MAX_PATH]; } PROCESSENTRY32; typedef PROCESSENTRY32 *PPROCESSENTRY32 メンバ
Windows ¤Î¥×¥í¥°¥é¥à¤Ç¡¢ ¥Ò¡¼¥×¥á¥â¥ê¤Ë³ÎÊݤ·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Î new ¤È delete ¤¬¤Á¤ã¤ó¤ÈÀµ¤·¤¯¹Ô¤ï¤ì¤Ê¤¤¤È¡¢ ¡ÖInvalid Address specified to RtlFreeHeap¡×¤È¤¤¤¦¥¨¥é¡¼¤¬½Ð¤ë¤³¤È¤¬¤¢¤ë¡£ Windows ¤Î¥Ò¡¼¥×´ÉÍýµ¡Ç½¤Ï¤³¤ÎÊդϷ빽¤Á¤ã¤ó¤È¤·¤Æ¤¤¤ë¤ß¤¿¤¤¤Ç¤¹¡£ ¥¦¥§¥Ö¤òŬÅö¤Ë¸¡º÷¤¹¤ë¤È¡¢ EXE ¤È DLL ¤Ç¥Ó¥ë¥É¤ÎÀßÄê¡Ê¥ê¥ê¡¼¥¹¤È¤«¥Ç¥Ð¥Ã¥°¤È¤«¡Ë¤¬°ã¤¦¤È¤³¤Î¥¨¥é¡¼¤¬½Ð¤ë¤«¤é¡¢ ξÊý¤Î¥Ó¥ë¥É¤ÎÀßÄê¤ò¤¢¤ï¤»¤Æ¥ê¥Ó¥ë
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く