2009-10-18から1日間の記事一覧

ユーザー インターフェイス特権の分離 (UIPI)と、ウインドウメッセージ(SendMessage,PostMessage,ChangeWindowMessageFilter)

Windows Vista ならびに Windows 2008 からは、セキュリティが強化されたためウインドウメッセージを使用した処理がOSによってフィルタリングされるケースがあります。 この問題は、少しこみいっていてSendMessageやPostMessageはフィルタリングされた場合で…

DLLの参照カウントについて

LoadLibraryとFreeLibraryを使用したDLLの動的ロードは以下の記事で説明しました。http://d.hatena.ne.jp/tekk/20091018/1255880682LoadLibraryとFreeLibraryは、DLLの実行時ロードと解放をそれぞれ担当するAPIですが、呼び出した際にいきなりDLLを読みこん…

DLL(Win32 API など) を実行時に動的ロードする。(LoadLibrary,GetProcAddress,FreeLibrary)

Win32APIを使用する場合はDLLImport属性を付けて使用したいAPIを事前に定義して使います。DllImport属性は使用したいDLLとのリンクがコンパイル時に設定されるためアプリ起動時にリンクを解決しようとします。(リンクを解決するというのは、DLLをメモリ上に…

Win32 API のエラー情報を取得する

Win32 APIを実行したあとでエラー情報を取得するには次の2段階の処理を経て取得します。(Win32APIは失敗しても例外は発生しません)1.Marshal.GetHRForLastWin32Errorでエラー情報のHRESULT値を取得します。 2.Marshal.GetExceptionForHRでHRESULT値から例…