意味 - みる会図書館


検索対象: API散歩道 下
67件見つかりました。

1. API散歩道 下

/ ン 第 1 章 Windows の勝手口 ■ワタソン「いろいろあるね」 0 デバッガがお世話になる A 円 ■ワタソン「なるほど。そうか」 一貫性があるよ」 ないけれど , 通常の API では知ることのできない情報を知るという意味では という基準で , 機能を集めてきた DLL だからね。そういう意味では一貫性は ても困らないけど , 特殊なユーティリテイからはアクセスしたい機能や情報 マホラムズ「ははは。 TOOLHELP はそういう分類ではなくて , 普通はアクセスできなく 扱えるというのは変じゃないかい ? まるで分野の違う内容だと思うけれど」 気がするんだけど。ウインドウのクラスと割り込みが , 同じ TOOLHELP で ■ワタソン「うん。わかった。でも , なんかこの一覧を見ていると一貫性がないような とついてない人が訳したようだから , そこは注意して読んでくれたまえ」 ンドウの複数形の "Windows" と OS の名前の "Windows" の区別がちゃん 現があるけれど , これは「ウインドウのクラス』だね。はっきりいって , ウィ この SDK のオンラインヘルプでは , Windows のクラスという表 マホラムズ「ちなみに ■ワタソン「君だよ , シャーベット・ホラムズ君」 「誰だい ? 」 ■ワタソン「そうそう。いちばん危なそうなャツが身近にいたつけ」 ・「危険だなあ」 ましたー』なんてもってくるかもしれないなあ。くわばらくわばら」 あのパステルは善悪がよくわかってないから , いきなり「ウイルス作ってみ ■ワタソン「もちろんだとも。僕のまわりには , そんなャツはいないよ。いや , 待てよ。 を教えてはいけないからね」 マホラムズ「そういうプログラムを作りかねないャツには , けっして TOOLHELP のこと 「え ? えええ ? えええええええ ? 」 マホラムズ「ウイルス , またはそれに類する , 邪悪な意図をもったプログラムさ」 ■ワタソン「え ? なんだい , それは ? 」 マホラムズ「デバッガだけじゃないぞ。もうひとっこれらの API を使う対象があるよ」 ■ワタソン「デバッガを作るときでもなければ , 使いそうもない機能ばかりだなあ」 数を設定したり。それから , スタックの情報を調べたりなんてのもあるね」 中断させたり , タスクの状態に変化があったときに呼び出すコールバック関 のための機能だね。任意の位置からタスクを実行させたり , タスクの動作を マホラムズ「じゃあ , 順番に説明するよ。最初のデバッグというのは , まさにデバッガ マホラムズ ホラムス ■ワタソン

2. API散歩道 下

/ 4 ・第 13 章 ここに読み出し専用のデータテープルなどを置くこと 幸福なメモリの使い方 ーのセグメントだけさ。つまり , 変数などの値が入っているセグメントを破 マホラムズ「それは駄目だよ。破棄と再読み込みのメカニズムが働くのはリードオンリ 0 ワタソン「よし。全部 DISCARDABLE にしてしまえ ! 」 デフォルトは NONDISCARDABLE だ」 ら , プログラマは意識する必要はないわけだ。結構便利なメカニズムだよ。 棄されても , プログラムのセグメントであれば自動的に再度読み込まれるか マホラムズ「そうだ。 NONDISCARDABLE にすると , そういう動作は行われない。破 棄可能にしてしまうと , 非常に困ったことになるよ」 第ワタソン「そうか ! 破棄されると変数の値が消えてしまうんだね」 マホラムズ「そう。データのセグメントには使わないほうが安全だろうね。じゃ , 次は 実行のみという項目だ」 ■ワタソン「これって , どういうものなんだい ? 」 マホラムズ「コードセグメントにつけるんだ。普通ならコードセグメントには機械語の 命令が入っているが ができる」 ーワタソン「そんなことをしてもいいのかい ? UAE みたいなエラーは出たりしないの ONLY というキーワードの機能さ。実行される命令はデータとしての読み出 ホラムズ「しかし , 読み出しを意図的にエラーにする方法がある。 ■ワタソン「へえ。そうなんだ」 丈夫だよ」 マホラムズ「コードセグメントへの書き込みはエラーの原因になるが , かな」 これが EXECUTE 読み出しなら大 ホラムズ「もちろん最終的には UAE を出さないコードを心がけなくちゃ。次にいこう。 そうじゃないんだね」 ■ワタソン「うーん , そうか。 UAE が出るのは悪いことだと思っていたけど , 必ずしも 行為をしでかす前に , 工ラーで停止させるために使えるね」 しを禁止することだけだ。例えば , バグっているコードがなにかの破壊的な インスタンスだ」 ■ワタソン「インスタンスって , いろいろな意味で使われる言葉だね。 を意味しているんだい ? 」 こでは , なに マホラムズ「これは , デフォルトのデータセグメントについて指定するものだよ」 ■ワタソン「それって , ローカルヒープとかスタックとかが入っているやつだよね」 マホラムズ「そう。 NONE を指定したモジュールはデフォルトのデータセグメントをも たないんだ。スタックも使えなくなるが , これは呼び出し側のスタックを使 う DLL では必要ない。だから , スタックだけでなく , ローカルヒープも静的

3. API散歩道 下

メモリの仕組みで見定める ■ワタソン「わかったぞ。メモリを 16 ビットで管理するか , 32 ビットで管理するか。そ の違いだといいたいんだろう ? 」 、「いや。残念ながらはずれだ」 ■ワタソン「いったい , どこが違うんだい ? 」 マホラムス マホラムス マホラムズ「実は , 同じだといったらどうする ? 」 ■ワタソン「じゃ , Windows95 や Windows3.1 や MS-DOS と , どこが違うんだよ」 ホラムズ「ビット数なんか , この際いくつでもかまわないんだ」 ■ワタソン「確かに , TOOLHELP の API を使えば , そういうことができるね」 たまえ。つまり , この方法ですべてのメモリにアクセスできるというわけだ」 マホラムズ「 Windows3.1 の場合は , セレクタを飛ばしてアクセスしていると考えてくれ セレクタで指定されていない領域はアクセスされない可能性があるね」 ■ワタソン「それって , メモリのすべてじゃないの ? あ , そうか。 Windows3.1 では , どね」 最小のアドレスは NULL に等しくなって , アクセスできないかもしれないけ のアドレスに達する。この範囲がアドレス空間だ。ただし c 言語の場合は , ば , ポインタ変数に最小のアドレスを代入し , 1 ずつ大きくしていって最大 できる , すべての範囲のメモリアドレスということだ。例えば c 言語でいえ ホラムズ「アドレス空間というのは , あるプログラムが CPU の命令によってアクセス ■ワタソン「え ? それじゃ , アドレス空間ってなんなんだい ? 」 ではない」 v ホラムズ「仮想記憶は , 見かけ上メモリを拡大するが , アドレス空間を拡大するわけ ■ワタソン「ハードディスクをメモリのように使う仮想記憶もあるね」 意味しているわけじゃない」 「そうだよ。アドレス空間とは , 単にパソコンに載っているメモリチップを ワタソン「アドレス空間って言葉に , そんな特別な意味があるかい ? 」 マホラムズ「そうか。君はアドレス空間の意味がわかっていなかったんだね」 ないかい ? 」 んだい ? そもそも , ひとつの CPU にはひとつのメモリ空間しかないんじゃ 第ワタソン「さっきからひとつのアドレス空間といってるけど , それ , どういう意味な 以外の領域はひとつのアドレス空間を共有しているらしい」 モリだけはプロセスごとに別々のアドレス空間を割り当てるらしいが , それ う点では同じなのさ。 32 ビットアプリケーションの場合 , それが直接使うメ とつのアドレス空間を細かく切って , それぞれのプロセスに割り当てるとい ▽ホラムズ「 Windows95 は , 32 ビットだし , マルチスレッドもサポートしているが , ひ ■ワタソン「だって , Windows95 は 32 ビットだし , マルチスレッドだし・・・・・・ぶつぶつ」

4. API散歩道 下

メモリの使い方を、 / / マホラムズ「重要なのは DISCARDABLE 属性だ。この属性は , メモリが不足すると自動 ■ワタソン「なるほど・・ 的に破棄されるという機能を実現する。これをいかに上手に使うかがミソだ」 めば時間がかかる。しかし , PRELOAD オプションをつけておいたらどうな v ホラムズ「ダイアログテンプレートもリソースの一種だ。これをディスクから読み込 ど」 「あります。でも , DialogBox A 円ってそんなものだと思っていたんですけ れたという経験はないかい ? 」 マホラムズ「例えば , なんでもない簡単なダイアログボックスを開くのに , 結構待たさ ■ワタソン「それって , どんな意味があるんだい ? 」 ときに使用する作業用メモリの属性を指定するんだ」 グラムから利用する場合には一度メモリに読み込む必要があるよね ? その マホラムズ「リソースは EXE ファイル中に取り込まれたデータだ。しかし , これをプロ ものなんだろう ? 」 リソースって , ファイルの中に入っている ■ワタソン「どういう意味があるんだい ? マホラムズ「そのとおり。リソースにも DISCARDABLE などの属性を指定できる」 「そういえば , リソースの RC ファイルの中で見た記憶があります」 のを知っているかい ? 」 マホラムズ「まあいいか。それで , ほかにも DISCARDABLE の属性を書ける個所がある ーワタソン「い , いいじゃないか。それくらい」 ▽ホラムズ「奥さんに , ちゃんづけで呼ばれてニャニヤしているなんて・・・・・・」 ■ワタソン「それ , 僕のことなんだよ。うっしっし」 マホラムズ「ワッちゃん ? 」 「あ , ワッちゃん知らなかったんだ」 ▽ホラムズ「そのとおり。書き方に注意が必要だけどね」 すよね」 「あ , わかりました ! DEF ファイルにも , DISCARDABLE って書けるんで ■ワタソン「え ? それ以外 ? 」 ついて考えてみよう」 ホラムズ「そういうメモリは DISCARDABLE にする必要はないよ。それ以外のものに だよね」 ■ワタソン「 G balA Ⅱ。 c で確保したメモリって , 勝手に破棄されると困ることが多いん ☆ / ヾステル ☆ / ヾステル ☆ / ヾステ丿レ ☆ / ヾステル 0 ワタソン ☆ / ヾステル ると思う ? 」 「 PRELOAD というのは , 「あらかじめメモリ上に読み込まれているから , すばやくダイアログボック 起動時にメモリに読み込むという意味だね ? 」

5. API散歩道 下

り 0 ワタソン「なるほど」 第 4 章 コモンダイアログを盜め ! マホラムズ「では , SDK のヘルプを読んでみよう。コントロールを置き換えるときには ローカルクラスを定義する方法は使えないと書いてある」 「あ , それって意味がわからないんだ。いったいなにをする場合のことなん だい ? 」 v ホラムズ「ふむ。例えば , 工ディットコントロールを別に作った独自のウインドウク ラスに置き換えたいとしよう。それには普通 , サプクラスの技法を使うね ? それとは別に , 工ディットコントロールと同じ , edit という名前のクラスを 登録してしまう方法がある。これがローカルクラスだ。アプリケーションが ローカルに edit というクラスを定義すると , システムが定義した edit クラス は隠されてしまうから , 工ディットコントロールを指定したコントロールに は自前の edit クラスが使用されるわけだ。なぜこの手法が使えないかという と , クラスのウインドウ関数が呼び出されるときにデータセグメントがアプ リケーションではなく , COMMDLG. DLL のデータセグメントを示したまま だということだ。ヘルプに書いてあるのは , たぶんこんな意味だろう」 ワタソン「ふーん , そういう意味だったとはわからなかったなあ」 、「それから , フック関数からダイアログを閉じるために EndDialog を使って はならない。この場合 WM_COMMAND メッセージで IDABORT を自分自身 に PostMessage しなければならない。これは注意が必要だね。コモンダイア ログは内部で凝った処理をしているから , ただのダイアログボックスとは動 作が違っている部分がある」 マホラムズ「そのほかの細かい点は SDK ヘルプを読んでくれたまえ。ここまで説明すれ ば , なにが書いてあるかは理解できるだろうからね」 ■ワタソン「うん , わかったよ」 「はい ! わかりました ! 」 v ホラムズ「パステル君は , くれぐれもプログラムのニーズを忘れないようにしてくれ たまえ。それから , 間違ってももう徹夜なんかするんじゃないぞ」 「はい ! 」 ■ワタソン「よし。僕も頑張るぞ。ワタソンスーパーツールの機能強化だ ! コモンダ イアログのカスタマイズとサプクラスを使って・・・・・・ブップッ。今夜は徹夜に なりそうだな」 マホラムズ「ワタソン君 , 肝心な話を理解していなかったとみえる」 「徹夜しないでくださいね , ワタソン先輩」 ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル V ホラムス ■ワタソン

6. API散歩道 下

圧縮の方法 、「オンラインソフトのたくさんある場所で探せば必ず見つかるさ。けっして マイナーなプログラムではないよ」 「でも , ほとんど誰も使ってないわけですよね , DOS や Windows の世界で は。いったい , それにどんな意味があるんですか ? 」 マホラムズ「そうだなあ。例えば LHA のコマンドなんかは , ar の流儀を汲んでいるんだ。 LHA a というコマンドだったら , ファイルの追加とかね。 ar の流儀は , こん なふうに LHA の中にも受け継がれているから , 無意味というわけじゃない と思うよ」 「わかりました。でも , 圧縮をしないアーカイバなんて , ちょっと変ですね」 ホラムズ「 LHA に慣れているとそう感じるかもしれないね。では , アーカイプしない 圧縮プログラムということならどうかな ? 」 「アーカイプしないっていうのは , どういう意味ですか ? 」 マホラムズ「つまり , 複数のファイルをひとつのファイルにまとめる機能がない圧縮プ ☆ノヾステル ☆ノヾステ丿レ ☆ / ヾステル ☆ノヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル マホラムス ログラムさ」 ■ワタソン「それなら僕にもわかるぞ。 EXPAND. EXE だ」 「なんですか , それは」 ■ワタソン「つまり , Windows に標準でついているってことね」 ら全員もっているといっても , 過言ではないくらいさ」 マホラムズ「それがあるんだ。しかも解凍プログラムに限れば , Windows のユーザーな 「そんなものがあるんですか ? 見たことありません」 くない。でも , Windows のインストーラはそんなことはやっていないだろ プログラムを起動して解凍させていたら遅くなってしまうし , そもそも美し それでもいいとして , 問題は解凍するときだ。インストーラがいちいち DOS くない。まあ , 圧縮のほうは , インストールディスクを作るときだけだから と COMPRESS. EXE は通常の DOS プログラムだから , 使い勝手はあまりよ マホラムズ「では本題に戻ろうか。 Windows ユーザーの立場から見れば , EXPAND. EXE 「はい ! わかりました」 ーカイプしないけど , 圧縮と解凍を行うプログラムというわけさ」 . EXE というプログラムだ。この EXPAND. EXE と COMPRESS. EXE は , ア ▽ホラムズ「ファイルを圧縮するほうのプログラムは , SDK に入っている COMPRESS 「わあ。それは気がつきませんでした」 という解凍プログラムがついているわけだ」 されたファイルが存在する。それを手動で解凍するために , EXPAND. EXE ているけれど , アーカイプはされていない。つまり , ファイルの数だけ圧縮 ▽ホラムズ「ご名答。 Windows のインストールディスク上のファイルはどれも圧縮され

7. API散歩道 下

アプリケーションの魅力第 0 アプリケーションの魅力 いだろうと思ったから」 マホラムズ「かまわないとも。どうせあの様子では , 一度寝たら 24 時間くらいは起きな 「すみません , つい寝過ごしちゃって」 ■ワタソン「あ , やっときたな」 ☆ / ヾステ丿レ ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ノヾステ丿レ ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ラムを発表するまで , そんな使い方ができるとは思ってもいなかったわけだ」 マホラムズ「ちょっと待ちたまえ。それは君が意図した便利さではないね。君はプログ が高速だから , BMP ファイルの内容をチェックするのに便利だって」 「便利だっていってくれる人もいますよ。ペイントプラシよりも絵を開くの たわけではないんだね。はたしてそんなプログラムが便利だろうか」 マホラムズ「じゃあ , 具体的にこういうふうに使おうとか , そういう目的があって作っ ル構造を説明したページが出てきて , 面白そうだったから作ってみたんです」 「えーと , API のリファレンスマニュアルを開いたら BMP ファイルのファイ イントプラシでもいいじゃないか。決意した理由はなんだろう」 って , そのプログラムを作ろうと決意したわけだ。 BMP を見るだけならペ マホラムズ「いやいや , そういうことを聞いているんじゃない。君はなにかの理由があ 「 BMP ファイルを見るためのものです」 をするためのものかな」 マホラムズ「そうじゃないさ。君が作ったのは BMP ファイルのビューワだろう ? なに けど」 「それは , たまたま同じようなプログラムを作る人がいたからだと思います えてみようじゃないか」 マホラムズ「ちょっと待った。その前に , なぜ機能拡張競争になってしまったのかを考 「はい ! コモンダイアログに機能を追加する方法を教えてください」 v ホラムズ「うん。では本題に入ろうか」 「私はもう元気ハッラツです ! 」 いたら寝不足になってしまったよ」 ■ワタソン「え ? そこまで予測していたの ? 僕なんか , いつくるかと思って待って あるのかちゃんと考えたうえで作っているのか , それが問題なんだ」 マホラムズ「そういう意味じゃない。そうではなく , そのプログラムにどんなニーズが 「最初から便利なプログラムになるように作れっていうことですか ? 」 マホラムズ「つまり , そこが重要なんだ」 「それはそうですけど」

8. API散歩道 下

プリンタの能力を調べるい ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル 「・・・・・頭が混乱してきました」 マホラムズ「なるほど , わかったよ。君は hDC を誤解しているようだね」 「 hDC ってデバイスコンテキストですよね。それなら知っていますけど。 インドウに描くときに使うハンドルでしよう ? 」 マホラムズ「本当の意味は , そうじゃないんだ。そこから説明を始めよう」 「はい ! 」 ウ マホラムズ「デバイスコンテキストというのは , デバイスへの出力のコンテキストをも っているハンドルだ」 「え ? え ? なんですか , それは」 マホラムズ「出力用のデバイスには , ディスプレイとプリンタがあるね。まあ , ほかに もプロッターなんかもあるけれど , これはプリンタの仲間としよう」 「はい」 マホラムズ「これに , なにかの文字や絵を出力したいとする。デバイスにデータを送り 出してやればすむ話なんだけれど , ちょっと考えてみたまえ。例えば文字列 をひとっ打ち出すためにはどれくらいの情報が必要か」 マホラムズ「それじゃあ , 例えば TextOut という文字を打ち出す API にいくつの引数が 必要になるかを考えてみようじゃないか。まず座標と文字列は必要だね」 「はい ! 」 ホラムズ「それから , 使用するプリンタドライバやディスプレイドライバの名前 , 出 力に使うポートがプリンタポートの 1 番か 2 番か , それとも別のどれかの指 定 , 印字する色の指定やバックの色の指定 , フォントの種類 , サイズ , ポー ルドやイタリックなどのオプション指定 , それから・・・・・・」 「そんなにあるんですか ! ? 」 ホラムズ「もっとたくさんあるよ。でも , このへんで終わりにしておこう。つまり , 単に出力するだけでも膨大な情報が必要になるんだ。これを全部引数にして 一度に渡すのは , 煩雑すぎてちょっと現実的じゃない」 「そうですね」 マホラムズ「だから , 出力のコンテキストというものを用意したわけだ。コンテキスト というのは文脈とでもいったらいいのかな。ある一連の文書を打ち出すとか , あるウインドウに描画するとか , そういった連続した出力を意味するんだ」 「 hDC ってそういう意味なんですか」 マホラムズ「そう。コンテキストには , いろいろな情報をもたせておくことができる。 だからコンテキストに対して色やフォントの情報を設定しておくと , TextOut という A 円はコンテキストと座標と文字列を指定するだけで文字の表示や印

9. API散歩道 下

′砂イ嚀第 12 章 画面に残されたメッセージ 仮想画面も含めると 3 つだ」 マホラムズ「そうじゃない。 NT の場合は , セキュリティを維持するために複数の画面を 新ワタソン「わかった。画面が 3 つあったら , 仮想的に広い画面が使えるんだ」 ■ワタソン「ユーザー名とパスワードの入力を待っている画面だね」 マホラムズ「まず , ログオン画面だ。これはわかるよね」 ■ワタソン「どういう意味なんだい ? 」 もっているんだ」 マホラムズ「そうだ。 ■ワタソン「 ? 」 こからログオンすると , 通常画面に切り替わる。つまり , ログ オン画面とは違う画面に切り替わるんだ。この意味がわかるかい ? 」 ▽ホラムズ「そうだ。つまりね , 通常のアプリケーションは , いくら頑張ってもログオ ■ワタソン「え ? そうなの ? 」 例えば EnumWindow などの A 円で調べても , 出てくることはない」 マホラムズ「別画面にあるウインドウやそのほかのリソースはアクセスできないんだよ。 ンプログラムにイタズラをすることができないんだ」 ■ワタソン「イタズラって ? 」 マホラムズ「例えば , ウインドウ関数をフックしてメッセージを盗み見るとか , いくら頑張ってもイタズラをすることができないんたリ ■ワタソン「あ , なるほど」 うたぐいのことさ」 そうい 、いヾ : をドト : ご スラ才ち、中 べイトプンや . ・・ルネさ こ /. ち仆 ・トな・ : み

10. API散歩道 下

第 1 0 章 ゲームだって作りたい ! ■ワタソン「え ? そうなの ? 」 アプリケーション んだから , それは速いよ」 仕組みさ。なにしろリアルタイムの動画を再生するためのインタフェースな → DCI という経路で表示データを流せば , 高速画像表示も可能になるという ない。そこで , WinG が出てくるわけだ。ゲームアプリケーション→ WinG ▽ホラムズ「この DCI のインタフェースを Video for Windows だけで使うのはもったい ■ワタソン「なるほど」 いくと思うよ」 か売れないだろう ? 今後は , どのカードのドライバも DCI をサポートして と思う。しかし , Videof 。 rWindows の性能が低いディスプレイカードなん マホラムズ「いや , たぶん新しい DCI 対応のディスプレイドライバにしか入っていない ■ワタソン「それは , すべてのディスプレイドライバに入っているのかい ? 」 Windows が使うもので , とりあえず DIB を高速に表示できる」 の高速化のために用意されたインタフェースなんだ。本来は Video for マホラムズ「これを DCI (DispIay control lnterface) という。これは Video for Windows GDI DDI WinG DCI OpenGL 3D-DDl ディスプレイドライバ 図 1 ディスプレイドライバへの新しいバイバス ■ワタソン「そうか。ようやく話が見えてきたぞ」 マホラムズ「それだけじゃないぞ。 WinG では , ビットマップの中身に直接アクセスがで きるんだ」 住ワタソン「それはどういう意味だい ? 」 マホラムズ「 WinG では , メモリ中のビットマップに画像を作成して , これを高速な専用 BitBItAPI で実際の画面に送り込むという方法をとる。しかし , メセリ中の ビットマップを作成するのが遅ければ , なんの意味もない。そこで , メモリ 中のビットマップへのポインタがアプリケーションから参照できるような仕 組みが入っているんだ。 GDI の描画 A 円でも直接ポインタ経由で参照して ,