タグ

WindowsとC++に関するtyruのブックマーク (19)

  • SSD なら動作を変えるアプリケーションを作る - NyaRuRuが地球にいたころ

    Windows 7 以降の OS では,SSD 上のボリュームに対してデフラグがスケジューリングされません.これと同様に,ドライブ特性に応じた動作戦略の変更をアプリケーションでも行いたいこともあるでしょう.そのような場合にアプリケーションに組み込めるように,簡単なサンプルコードを書いてみます. 元ネタは, Windows 7 Disk Defragmenter User Interface Overview - The Storage Team at Microsoft - File Cabinet Blog - Site Home - TechNet Blogs で解説されているアルゴリズムです. 以下,物理ドライブ "\\.\PhysicalDrive0" について,"no seek penalty" かどうかと,"nominal media rotation rate" かどうかの取

    SSD なら動作を変えるアプリケーションを作る - NyaRuRuが地球にいたころ
  • Big Sky :: Windowsへの移植も視野にいれたプログラムを書くなら読んでおいて欲しい事

    絶対パスの先頭に/が来る事を期待してはいけない しかしながら絶対パスの先頭にドライブレターが来る事を期待してはいけない UNCパスのホスト名やシェア名はディレクトリではないのでファイルシステムAPIは使えない事を意識しておく unixに比べパス内に空白文字が入る可能性が高い事を意識しておく ホームディレクトリを意味するパスの先頭チルダは自前で展開する必要があり、またパスの途中にチルダが混じる事は日常的にある ソケットディスクリプタに対してもread/writeで送受信できる事を期待してはいけない パイプでない標準入力のselectはやっても意味がない ディレクトリ内にあるファイルを開き、ハンドルを保持したままディレクトリを消せるのは当たり前だと思わない パスのセパレータが/¥である事を期待してANSI APIを使ってはいけない Cランタイム(POSIX互換API)とWindows API

    Big Sky :: Windowsへの移植も視野にいれたプログラムを書くなら読んでおいて欲しい事
  • IntelliSenseのデータベースをRAMディスクに移動してみた - うなてっくろぐ

    ええVisualStudio愛用してますとも。 さて、コード補完等をしてくれるIntelliSenseですが、C++の場合はソースを解析したものをキャッシュすることで高速化を図っています。具体的に言うと.ncb(2008以前)とか.sdfとかipch(2010)とかそんな名前のファイル・フォルダです。 コード補完無しではろくにコード書けないので*1やむを得ないものの、100MB近いファイルがソリューションごとに生成されて、そのうえコードを変更する度に更新されるというのはちょっと気になるところです。ファイルをコピーするときに邪魔だしね。 で、どうせ頻繁に更新されるなら*2もうオンメモリでいいじゃないですか。 先日Dataram RAMDiskというソフトを導入して2GBほどRAMディスクとして使っています。ここに移動することにしました。 フォールバックってなんだ VisualStudioには

    IntelliSenseのデータベースをRAMディスクに移動してみた - うなてっくろぐ
  • Predefined macros

    The Microsoft C/C++ compiler (MSVC) predefines certain preprocessor macros depending on the language (C or C++), the compilation target, and the chosen compiler options. MSVC supports the predefined preprocessor macros required by the ANSI/ISO C99, C11, and C17 standards, and the ISO C++14, C++17, and C++20 standards. The implementation also supports several more Microsoft-specific preprocessor ma

    Predefined macros
  • MSVCのランタイムとスレッドとリソースリークの関係

    の虫: いまだに変な宗教が流行っているを書いたところ、どうもこのへんの情報は、あまり知られていないようであるので、できるだけ分かりやすく解説することにした。 Cの標準ライブラリは、恐ろしく古いライブラリである。その設計は、マルチプロセッサ(コア)上で動作するマルチスレッドが当然の現代では、あまりよろしくない。 たとえば、strtokという関数がある。この関数は、引数として渡された文字列を、内部のバッファにコピーする。次のstrtokの引数には、NULLを渡すことで、そのコピーされたバッファから、次のトークンの場所へのポインターを返すのである。 void f( char const * ptr ) { char const * p1 = strtok( ptr, " " ) ; char const * p2 = strtok( NULL, " " ) ; } しかしもし、strtokが複

  • ビルド済みBoost - Faith and Brave - C++で遊ぼう

    boost-win-bin - Google Code 今のとこ、Visual Studio 2008でビルドされたBoost 1.40.0があるようです。

    ビルド済みBoost - Faith and Brave - C++で遊ぼう
  • iostreamの拡張

    Last update 1999/09/22 iostreamの拡張 (C)平山直之 無断転載は禁止、リンクはフリー 誤字脱字の指摘は歓迎 iostreamの拡張について 例によって唐突ですが、iostreamの拡張について書いてみたいと思います。ここでいう「拡張」とは、自分でcinとかcoutみたいなものを作ろう、ということです。 「こんなもん一番最初に教えんなや」と比較的評判の悪いiostreamですが、 演算子オーバーロードがいわば「御法度」な使い方をされている メソッドの命名法がやたら変 などのように表面的に美しくないのが悪評の原因で、その辺に目をつぶれば実はそれなりによくできたシステムだったりします。 拡張方法も一度覚えると結構便利ですぜ。 iostream拡張の基礎知識 iostream、というと、そのインターフェイス(Java的な意味じゃなくて)であるところのstd::cin

    tyru
    tyru 2009/06/20
    WinMainなプログラムからでもデバッグ用コンソールにiostreamっぽく出力, zlibによるフィルタ, etc.
  • VC++ CriticalSectionの速度 / Tips / Cycle of 5th

    排他的制御をしたい時に使うのがこのCiriticalSection(クリティカルセクション)。具体的にいつ使うのかというと、マルチスレッド処理などをしている時に、同時にアクセスされるとまずい部分がある場合の時に使う。 例えば、2つのスレッドがあった時、スレッド1で配列のサイズを変更しスレッド2で同じ配列のある場所を読み込む場合、配列サイズ変更中などにアクセスするとアクセス違反が発生しプログラムが落ちることもある。 WindowsでこのCriticalSectionを使う時は、InitializeCriticalSection、EnterCriticalSection、LeaveCriticalSection、DeleteCriticalSectionという関数及びCRITICAL_SECTIONという構造体を利用する。具体的使い方などは、MSDNなどで調べてもらうとして、今回はこれを使った

  • Windows API Hooking Tutorial

    はじめに Windowsアプリケーションは、通常APIを利用することによって実現されています。たとえ.NETやMFCなどを利用して作成されたプログラムであったとしても、内部的にはすべてWindowsAPIが呼び出され処理されているというのは周知の事実です。プログラムがWindows上で動作している限り、何かしらのカタチでAPIが使われていることは確かなのです。では、今回はそのAPIをフックすることを考えてみます。「Wizard Bible vol.15」の「リバースエンジニアリング」にて、私はAPIフックについて少しだけ触れましたが、今回はそのAPIフックについてのさらに深い話題となります。あらかじめ必要な知識は、Windowsプログラミングに多少の知識があることと、特にDLL関連に詳しいことです。あと「Wizard Bible vol.10」の「常駐プログラム隠蔽テクニック」も読んでおい

    tyru
    tyru 2009/02/22
    フック
  • Windowsに土足で乱入?! 〜 フック関数の使い方 : DSAS開発者の部屋

    今日の多くの OS がそうであるように、Windows にも自作のプログラムコードを特定のプロセスへ介入させることのできる「フック」という仕組みがあります。自分自身のプロセスをフックすることもできますが、他のプロセスをフックすることで通常のアプリケーションプログラミングの枠を超えた様々な興味深い処理の実現が可能となります。 ・所定のプロセスに対する Windows メッセージの監視・捕捉 ・所定のプロセスでの特定のイベントに呼応する自作コードの注入 ・既存のアプリケーションの所作を変更 etc. 「自作のコードをあるプロセスに介入させる」とはどういうことでしょう? メモリ上のモジュールイメージにアクセスしてマシン語命令を書き換えて・・という怪しげな方法もありそうですが、Windows では DLL を利用することで比較的容易にこの命題を解決できます。 このことを逆に考えると、自作の DLL

    Windowsに土足で乱入?! 〜 フック関数の使い方 : DSAS開発者の部屋
  • データ型一覧

    データ型の中で ( ) で括った部分は省略可能です。 int型やunsigned int型のデータサイズは、16ビット環境では16ビット(2バイト)ですが、32ビット環境では32ビット(4バイト)になります。 さらに、上で示した基データ型にアスタリスク("*")をつけたものは、そのデータ型へのポインタ(メモリアドレスを格納する変数)を表します。たとえば、「unsigned int*」は「unsignd int」型データへのポインタ、すなわち、「unsignd int」型の変数のアドレスを格納する変数の型を表しています。 また、データ型の先頭に「const」をつけると、それはデータの内容が変更されないことを示します。 さて、Win32 APIを使うプログラミングではこう言ったデータ型に別名をつけて、いろいろなデータの種類をわかりやすく表すようにしています。たとえば、「unsigned sh

  • MinGWによるWindows Programming - PukiWiki

    2010-12-12 Javaの復習 JavaC++ JavaのFrame Javaの復習(2) 2010-11-29 メールの保存 Hirofumi Fujii Start Page 2010-11-19 C++のiostream C++のiostream感想-その3- 2010-11-18 C++のiostream感想-その2- 2010-05-30 標準入出力のバイナリモード 2010-05-26 MinGWについて 2010-05-21 C++入門第一回(2) C++入門第一回 画像添付 2010-01-13 gnuplot の iostream 化 C++ iostream 実装例 その 7 C++ iostream 実装例 その 6 C++ iostream 実装例 その 3 2010-01-07 乱数の例題(3) 乱数の例題(2) MinGWについて この文書は、MinGW

  • MinGWによる日本語Windows Programming - PukiWiki

    2010-12-12 Javaの復習 JavaC++ JavaのFrame Javaの復習(2) 2010-11-29 メールの保存 Hirofumi Fujii Start Page 2010-11-19 C++のiostream C++のiostream感想-その3- 2010-11-18 C++のiostream感想-その2- 2010-05-30 標準入出力のバイナリモード 2010-05-26 MinGWについて 2010-05-21 C++入門第一回(2) C++入門第一回 画像添付 2010-01-13 gnuplot の iostream 化 C++ iostream 実装例 その 7 C++ iostream 実装例 その 6 C++ iostream 実装例 その 3 2010-01-07 乱数の例題(3) 乱数の例題(2) MinGWによるWindows Progr

  • API別 Win32 サンプル集

    AllocConsole コンソールの割り当て AngleArc 円弧の描画 Arc 楕円の描画 ArcTo 楕円形の円弧の描画 AssignProcessToJobObject ジョブオブジェクトにプロセスを追加 BackupEventLog イベントログのバックアップ BeginPath パスの作成の開始 BitBlt グラフィックデバイス間のイメージの転送 BlockInput マウスやキーボード入力のブロック CancelWaitableTimer 待機可能タイマの無効化 ChangeClipboardChain クリップボードビューアの削除 Chord 弓形の図形の描画 ChrCmpI 文字の比較 ClearEventLog イベントログのクリア CloseClipboard クリップボードのクローズ CloseDesktop オープンされているデスクトップハンドルのクローズ C

  • works

  • 猫でもわかるプログラミング

    超初心者対象の、C/C++/C#プログラム教室です。 「Windows95/98/2000/XP使うだけには飽きた」「以前Cをやったことがあるが、ポインターでつまずいた」 「プログラムは、全く経験がない」「DOSのプログラムは、作れるがWindowsのプログラムは ちょっと・・・」という方のためのホーム・ページです。中級者以上の方、セミプロの方、 プロの方ご遠慮ください。Macユーザーの方も私の力不足のためお役に立てません。 Webmaster Yasutaka Kumei [How To Walk][画像が表示されない時は] [VC++6.0でうまくビルドできない時は] [リソースがうまく表示されない時は(VC++6.0)] [リソースがうまく表示されない時は(VC++.net)] [メッセージ・ループ] [WinXP+VC++.netでコンパイルできない時は] [.netでパラメータ・

  • WisdomSoft

    WisdomSoft(旧) このサイトはすでに運用を停止しています。 新しいコンテンツはこちらをご覧ください ■Products■ 書籍 ソフトウェア 読C 読Java Javaアプリケーション作成講座 Windowsゲームプログラミング ゲームエンジン プログラミング C#ゲームプログラミング Cisqua Developers Network プログラミング システムとAPI C言語入門 C++入門 C#入門 D言語入門 Java言語入門 Objective-C入門 Lisp入門 Perl入門 PHP入門 アセンブリ言語入門 Win32 API入門 標準 Windows API コモンコントロール マルチメディア API Windows ソケット JavaAPI入門 AWT入門 Swing入門 ネットワーク入門 Microsoft .NET入門 DirectX入門 OpenGL入門

  • Win32 メッセージ一覧

    ここで掲載されているメッセージは、講座内で紹介されたメッセージだけです ウィンドウメッセージ タイミングwParamlParamreturn WM_CHANGECBCHAIN

  • VC++の使い方 [VC++の使い方]

    このページについて このページは、VC++ の使い方を中心にまとめようと思っていましたが、管理者がいろいろな知識をメモ的に詰め込む用途にも使われ始めました。どこにでもある内容よりも、どこにもない情報をまとめてみたり、散らばっている情報を集積することを目的としています。 今のところの目玉コンテンツは VC++の使い方 GUIのプログラミング IEコンポーネント といったところです。 サイトマップ このサイトについて VC.NET関係の資料 VS .NET 60日間限定評価版を斬る ソリューションとプロジェクト チュートリアル VC++入門 デバッグ入門 リファレンス C/C++メモ ビルドエラー対処法 GUIリファレンス VC++ Tips エディタとVC++の大人な関係 CVSによるソース管理 IEコンポーネントの使い方 ウインドウ選択 インターフェース 時代はXML 軽い実行可能ファイル

  • 1