Apple's thinner new iPad Pros feature an M4 chip and "tandem" OLED displays
DLLはアイテムを共有するためにあります。 そのアイテムは主に関数ですが、 基本的にほとんど全てのアイテムを共有できます。 関数、変数、クラス、リソースあたりですね。 このうちリソース以外のアイテムは、 プログラムから利用できるようにするためにエクスポートする必要があります。 エクスポートとは何ぞや?さぁ、分かりません。(ぉぃ 困ったときはMSDNに依存しときましょう。 DLL のレイアウトは .EXE とよく似ていますが、重要な相違点が 1 つあります。DLL ファイルには、エクスポート テーブルが含まれています。エクスポート テーブルには、DLL が別の実行形式に対してエクスポートする各関数の名前が含まれています。これらの関数は、DLL のエントリ ポイントです。エクスポート テーブルに記述されたエクスポート関数のみが、別の実行形式にアクセスできます。DLL 内のその他の関数は、その
http://blogs.msdn.com/oldnewthing/archive/2007/05/03/2383346.aspx よく、OSが解放してくれるから、プロセス終了時にはリソース解放などをしなくてもいいという意見に対して、「いや、できる限りすべきだ」という人が居るが、場合によりけりということらしい。いや、別にしてもいいのだけれど、DLL_PROCESS_DETACHの中でやるなということで。 プロセスが終了するとき、Windows XPがどのような処理をするか。ExitProcessが呼ばれたとき、ExitProcessを読んだスレッド以外のすべてのスレッドは、終了される。スレッドが何をしていようがお構いなしだ。つまりは、TerminateThreadに等しいということだ。MSDNではTerminateThreadは使うべきではないとしつこく警告されているが、一体何がまずいのか
プログラミングの経験が長くなればわかると思うが、たいてい、同じ処理が何回も必要になってくる。 その同じ処理をそのつど書き直していたら非常に無駄なので、 DOS時代のプログラマ達はその共通処理部分をスタティックリンクライブラリ(LIB)に収めていた。 その共通部分の関数が使用したければ、リンクするときにLIBからその関数部分をリンカに抽出してもらい、 作成する実行ファイルに埋め込んでもらう。この方法は「静的リンク」と呼ぶ。 Cのランタイムライブラリが良い例だ。 ただし、この方法の欠点は、全く同じコードがそれぞれの実行ファイルに存在することになるので、 ディスクスペースがもったいないことである。 しかしDOSプログラムでは、(シングルタスクOSなので)メモリ上で動作するプログラムは1つしかないので、 メモリを無駄に使うことはなく、この方法でも全然受け入れられた。 ところがWindowsではマル
今日の多くの OS がそうであるように、Windows にも自作のプログラムコードを特定のプロセスへ介入させることのできる「フック」という仕組みがあります。自分自身のプロセスをフックすることもできますが、他のプロセスをフックすることで通常のアプリケーションプログラミングの枠を超えた様々な興味深い処理の実現が可能となります。 ・所定のプロセスに対する Windows メッセージの監視・捕捉 ・所定のプロセスでの特定のイベントに呼応する自作コードの注入 ・既存のアプリケーションの所作を変更 etc. 「自作のコードをあるプロセスに介入させる」とはどういうことでしょう? メモリ上のモジュールイメージにアクセスしてマシン語命令を書き換えて・・という怪しげな方法もありそうですが、Windows では DLL を利用することで比較的容易にこの命題を解決できます。 このことを逆に考えると、自作の DLL
Sends a control code directly to a specified device driver, causing the corresponding device to perform the corresponding operation. See the Assign drive letter sample. Syntax BOOL DeviceIoControl( [in] HANDLE hDevice, [in] DWORD dwIoControlCode, [in, optional] LPVOID lpInBuffer, [in] DWORD nInBufferSize, [out, optional] LPVOID lpOutBuffer, [in] DWORD nOutBufferSize, [out, optional] LPDWORD lpByte
概要 この課題では,Winodws Device Driver Kit (DDK) を用いて,デバイスドライバを作成する.この補足資料では,開発・実行環境の設定についてや,課題中で使用されるWindows API などについて説明する. 1 はじめに この節では,まず,環境設定やDDK の基本的な使い方について述べる.次に,Windows 上でプログラムをしたことがない人もいるかもしれないということで,Windows プログラムの基礎的な事項について説明する. 1.1 開発・実行環境の設定 このプロジェクトの課題を解く上で,以下のソフトウェアが必要となる. Windows XP またはWindows Server 2003 この課題では,Windows のレジストリコールバックという機能を使用する.この機能はWindows XP とWindows Server 2003 でしかサポートされ
3. 基本的な非同期 I/O 3.1 概要 非同期 I/O を開始するための典型的な手順は次のようになります。 ファイルを開くときに OVERLAPPED を指定する。 CreateFile(Ex) ならば FILE_FLAG_OVERLAPPED を指定。ソケットの場合は WSASocket にて WSA_FLAG_OVERLAPPED フラグ等。 読み込み・書き込み操作の時に OVERLAPPED 構造体を渡す。 OVERLAPPED 構造体というのは次のように定義されています。 typedef struct _OVERLAPPED { ULONG_PTR Internal; ULONG_PTR InternalHigh; DWORD Offset; DWORD OffsetHigh; HANDLE hEvent; } OVERLAPPED それぞれのフィールドは、ファイルの種類や呼び
ドライバとアプリケーションの関係 API (Application Programming Interface) APIはOSやミドルウェア向けのソフトウェアを開発する際に使用可能な命令、関数の集合体です。APIはユーザーモードのアプリケーションから呼ばれ、アプリケーションはその指示をドライバに渡します。アプリケーションからデバイスを操作する際、ドライバに命令を渡すAPIは欠かすことができません。このAPI関数を理解し、正しく使用することはとても重要です。まず、API関数の引数が出力か入力かをきちんと理解する必要があります。ここでは分かりやすいように、出力引数に網かけをしています。また、APIが正常に実行されたかを確認するために、アプリケーションではAPIの戻り値をチェックする必要があります。アプリケーションがドライバに命令を送る際に使用する、主要5つのAPIの概要を下に記します。詳細につ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く