Quantcast
Channel: イグトランスの頭の中
Browsing all 123 articles
Browse latest View live

Image may be NSFW.
Clik here to view.

STAのメソッド呼び出しを見てみる

本記事は、COM Advent Calendar 2014 – Qiitaの13日目の記事です。...

View Article


MTAのメソッド呼び出しを見てみる

本記事は、COM Advent Calendar 2014 –...

View Article


アパートメントが死ぬときオブジェクトも死ぬ

本記事は、COM Advent Calendar 2014 – Qiitaの15日目の記事です。マーシャリングされたオブジェクトの寿命は、アパートメントに縛られます。アパートメントが終わったら、そのアパートメントにいるオブジェクトにはアクセスできなくなります。今度のプログラムは、STAのスレッドを(1) TerminateThread (2)...

View Article

マーシャリングできない場合の動き

本記事は、COM Advent Calendar 2014 –...

View Article

マーシャル禁止のオブジェクト

本記事は、COM Advent Calendar 2014 – Qiitaの17日目の記事です。前回のマーシャリングできないインタフェースの話に続いて、今回はオブジェクト自らがマーシャリングの禁止を宣言する話です。マーシャリングできないことを表明するインタフェースINoMarshalがWindows 8で追加されました。早速サンプルコードを出します。#include <iostream>...

View Article


今いるアパートメントの種類を知りたい

本記事は、COM Advent Calendar 2014 – Qiitaの18日目の記事です。今日は、現在実行中のスレッドのアパートメントの種類を知る方法です。まず、Windows 7からCoGetApartmentType関数があります。それとATLにATL::AtlGetApartmentType関数があります。#include <iostream> #include...

View Article

Agile Objectまたはフリースレッドマーシャラーの集成

本記事は、COM Advent Calendar 2014 –...

View Article

OBJREFモニカー

本記事は、COM Advent Calendar 2014 – Qiitaの20日目の記事です。OBJREFモニカーはオブジェクトへの参照を扱うモニカーです。文字列で表現できるため、プロセス間での受け渡しに使用できます。 サンプルプログラム:...

View Article


スタブオブジェクトの寿命とそのロック

本記事は、COM Advent Calendar 2014 –...

View Article


OBJREFモニカーによるコンピュータ間の通信を試す

本記事は、COM Advent Calendar 2014 –...

View Article

Image may be NSFW.
Clik here to view.

アクセス許可の指定でリモートアクセスを禁じる

本記事は、COM Advent Calendar 2014 –...

View Article

WinRT APIを使ってみる

本記事は、COM Advent Calendar 2014 – Qiitaの24日目の記事です。最後(CoUninitializeの前)に、Windowsストアアプリ用APIであるWindows Runtime API (WinRT API)を使うサンプルコードも取り上げようと思いました。「WinRT APIはCOMなんだよ」を示すべく、ネイティブのC++でWinRT...

View Article

CoInitializeとCoUninitializeが呼び出されたことを知る

本記事は、COM Advent Calendar 2014 – Qiitaの25日目の記事です。今日で最後です。COMには、CoInitializeやCoUninitializeが呼び出されたことの通知を受け取る手段が用意されています。IInitializeSpyおよびCoRegisterInitializeSpyそしてCoRevokeInitializeSpyです。#include...

View Article


VC++でstd::threadから数値のスレッドIDを取り出す

今回はVisual C++限定の話です。VC++のstd::thread::id型オブジェクトは、boost::lexical_castで整数型に変換できます。Windows APIなどに渡す場合に使えます。#include <iostream> #include <thread> #include <windows.h> #include...

View Article

C++の正規表現は全角文字にマッチする(かもしれない)

C++の正規表現はロケールが考慮されます。初期状態はCロケールなのでASCIIの範囲にしかマッチしませんが、その他のロケールを使用すれば、たとえばワイド文字で全角文字にマッチすることもあります。途中の過程を飛ばして述べてしまえば、メタ文字の\s, \d, \wのマッチはstd::localeのctypeで判定されます。言い換えれば、std::localeを引数に取るisspace, isdigit,...

View Article


Image may be NSFW.
Clik here to view.

Windows 8.1再起動時の「オプションの選択」画面をAPIで呼び出す

Windows 8~8.1で、完全なシャットダウンやセーフモードで起動したいときなどに使う「オプションの選択」の画面(右側画像のあれ、チャーム→PC設定→……などの手順で再起動すると出てくる)をWindows...

View Article

fstreamを返す関数

今更ですが、C++11からはfstreamやstringstreamを関数の戻り値にできるようになりました。#include <iostream> #include <fstream>   std::ifstream open_config_file() { std::ifstream s("app.conf");...

View Article


SetCoalescableTimerに置き換えるべきかと思った話

要約すると「SetTimerのすごい版、SetCoalescableTimerが出た。けど、わざわざSetTimerから移行する必要はないと分かった」というお話です。Windows 8よりSetTimerの系統にSetCoalescableTimerが増えていることに気付きました。Windows...

View Article

標準出力のパイプ経由でCOMインタフェースを受け渡す

プロセス越しにCOMインタフェースを受け渡す話、久しぶりにします。今度はCoMarshalInterfaceとCoUnmarshalInterfaceです。この間でのデータの受け渡しにCreatePipeによるパイプを使いました。今回のサンプルコード、OBJREFモニカーのときとは少し処理の流れが異なります。親プロセスp.exe (p.cpp): 子プロセスc.exe...

View Article

保護モードよりもう少しだけ制限の強いプロセスを作る

ちょっと制限のあるプロセスを作ろうと思いました。Integrity Levelを低にするCreateRestrictedTokenのDISABLE_MAX_PRIVILEGE |...

View Article
Browsing all 123 articles
Browse latest View live