<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>いちばんやさしいゲームの作り方 &#187; ハードウェア</title>
	<atom:link href="http://www.game-create.com/archives/tag/%e3%83%8f%e3%83%bc%e3%83%89%e3%82%a6%e3%82%a7%e3%82%a2/feed" rel="self" type="application/rss+xml" />
	<link>http://www.game-create.com</link>
	<description>文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ</description>
	<lastBuildDate>Tue, 08 Jun 2010 01:28:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HTML5 + 3D</title>
		<link>http://www.game-create.com/archives/3461</link>
		<comments>http://www.game-create.com/archives/3461#comments</comments>
		<pubDate>Sat, 05 Jun 2010 14:57:46 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[2D]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ハードウェア]]></category>
		<category><![CDATA[行列]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=3461</guid>
		<description><![CDATA[HTML5 が盛り上がっておりますが、現在でもプラグインをインストールすることで JavaScript からハードウェアのアクセラレータを利用できるらしく、なんとも恐ろしいものです。
O3D Demos and Samp [...]]]></description>
			<content:encoded><![CDATA[<p>HTML5 が盛り上がっておりますが、現在でもプラグインをインストールすることで JavaScript からハードウェアのアクセラレータを利用できるらしく、なんとも恐ろしいものです。</p>
<p><a href="http://code.google.com/intl/ja/apis/o3d/docs/samplesdirectory.html" class="external">O3D Demos and Samples &#8211; O3D Plug-in API &#8211; Google Code</a></p>
<p>HTML5 の正式リリースでこういった流れが加速するのでしょうか。</p>
<p><span id="more-3461"></span></p>
<p>しかしながら、いまだに HTML5 とグラフィックス描画との関連が見えません。もしかすると、そういった用途を想定した DOM オブジェクトが追加になっているのかもしれませんが、よく聞く Canvas というのがそれなのでしょうか。</p>
<p>私が把握しているのはセクションやヘッダーといった、 WEB サイトや文章を作るならあるとうれしいなぁ、というエレメントが追加になっていることくらいなものです。</p>
<p><a href="http://www.w3.org/TR/html5/the-canvas-element.html#dom-canvas-getcontext" class="external">草案</a>によると…</p>
<blockquote><p>To draw on the canvas, authors must first obtain a reference to a context using the getContext(contextId) method of the canvas  element.</p>
<p>context = canvas.getContext(contextId)<br />
    Returns an object that exposes an API for drawing on the canvas.<br />
    Returns null if the given context ID is not supported.</p></blockquote>
<p>…とのことで <a href="http://www.w3.org/TR/2dcontext/" class="external">HTML Canvas 2D Context</a> というオブジェクトを取得することができるようです。リンク先を確認してみましたが、 3&#215;3 の行列を使ったトランスフォームができるようでして、確かに 2D 描画機能としては不足を感じません（でも、表示ツリーみたいなことをやるにはどうすればいいんだろう？）。</p>
<p>また、かなり速度的な疑問を感じますが、 <a href="http://www.w3.org/TR/2dcontext/#pixel-manipulation" class="external">Pixel manipulation</a> によってフレームバッファへアクセスするかのようなことも可能らしいです。一応 data というプロパティへアクセスすることで &#8220;Returns the one-dimensional array containing the data.&#8221; というお話ですので、関数を呼んで１ピクセル単位で読み書きするよりかは高速になりそうですが、はてさて…</p>
<p>ちなみに、現在 W3C の方でまとまっているのは 2D 関連のみなのか分かりませんが…</p>
<blockquote><p>Vendors may also define experimental contexts using the syntax vendorname-context, for example, moz-3d.</p></blockquote>
<p>…とのことです。もし、「 Flash を駆逐したい！」と思われる方がいらっしゃるなら、誰かが頑張って作るかもしれません。</p>
<p>いろいろと分からないことが多いので本を注文してみました。良かったら紹介します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/3461/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>転ばぬ先の杖的な調査活動 &#8211; MIDI</title>
		<link>http://www.game-create.com/archives/2940</link>
		<comments>http://www.game-create.com/archives/2940#comments</comments>
		<pubDate>Wed, 24 Feb 2010 09:52:02 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームミュージック]]></category>
		<category><![CDATA[MIDI]]></category>
		<category><![CDATA[ハードウェア]]></category>
		<category><![CDATA[備忘録]]></category>
		<category><![CDATA[勉強]]></category>
		<category><![CDATA[音楽]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=2940</guid>
		<description><![CDATA[ゲーム音楽を作るのに MIDI 音源を使っているのですが、「 MIDI はもたる」というのをどこかで聞いて気になっておりました。ゲームを作る際に問題に遭遇しないために調査した思考の記録を残したいと思います。

ちょっと前 [...]]]></description>
			<content:encoded><![CDATA[<p>ゲーム音楽を作るのに MIDI 音源を使っているのですが、「 MIDI はもたる」というのをどこかで聞いて気になっておりました。ゲームを作る際に問題に遭遇しないために調査した思考の記録を残したいと思います。</p>
<p><span id="more-2940"></span></p>
<p>ちょっと前に、ドラびでおさんというアーティストの方が、ドラムとコンピュータを MIDI ケーブルで繋ぎ、ドラムを叩いてリアルタイムに MAD 映像を操作するというパフォーマンスをされているのをテレビで目にしました。そこで MIDI ケーブルに流れるのは波形ではなく何かの信号なのだと気がつきます。</p>
<p>そこでわかったのが MIDI 機器、特に音源は信号を受信した段階ですぐに音を鳴らすという点です。つまり、曲を演奏しようと思ったら、音を鳴らすタイミングは信号を送る側が調整しなければならないのです。昔の Cakewalk のようなソフトウェアを MIDI シーケンサーと呼んだのはそういった理由からだそうです。ピアノロールで設定したタイミングに合わせて MIDI 信号を送るのが役割だったようです。</p>
<p>…となると当然の疑問が湧いてきます。 MIDI 機器は一度にどれだけの信号を処理できるのでしょうか。処理性能はハードウェアによって異なるでしょうが、ケーブルに流せる量は決まっているはずです（仕様が変わってないとどこかで聞いたような）。</p>
<p>で、調べてみました。規格を見ればわかるだろうとインターネットの世界に繰り出します。</p>
<p><a href="http://www.midi.org/aboutmidi/glossary.php" class="external">MIDI Glossary</a></p>
<p>ここによると…</p>
<blockquote><p>BAUD : A measurement of speed at which serial data is transmitted. MIDI operates at 31.25 kBaud, i.e. data can be transferred at a speed of 31250 bits per second. </p></blockquote>
<p>…だ、そうで、あんまし転送量は多くないことが分かります。</p>
<p>ノート（音符の情報）の量を送るには十分かもしれませんが、その他の情報をあわせて送る際に問題に遭遇した場合はこのあたりに着目しようと思います。</p>
<p>ちなみに、未確認なのですが USB 接続するととんでもない転送量を実現できるようです。こちらもかなり興味あるのですが、前述の通り、受け側の性能以上のことはできませんのであんまり期待してないです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/2940/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>プロフェッショナル Windows ゲームプログラミング</title>
		<link>http://www.game-create.com/archives/1484</link>
		<comments>http://www.game-create.com/archives/1484#comments</comments>
		<pubDate>Sun, 05 Apr 2009 10:30:52 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[コンパイラ]]></category>
		<category><![CDATA[ハードウェア]]></category>
		<category><![CDATA[最適化]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1484</guid>
		<description><![CDATA[前の職場に Windows ゲーム開発に従事されていた方がいらっしゃいまして、いろいろ興味深いお話を聞きました。

MS のコンパイラが吐くコードより Intel のコンパイラの吐くコードの方が品質が高い（当時はコストベ [...]]]></description>
			<content:encoded><![CDATA[<p>前の職場に Windows ゲーム開発に従事されていた方がいらっしゃいまして、いろいろ興味深いお話を聞きました。</p>
<p><span id="more-1484"></span></p>
<p>MS のコンパイラが吐くコードより Intel のコンパイラの吐くコードの方が品質が高い（当時はコストベースの最適化は Intel のコンパイラが一番性能良かったそうです）のでそっちを使っていたり、やはりハードウェアの環境依存の解決が大変だったり（対応していない命令に”対応している”と返す偽仕様もあったとか）、コンシューマゲーム機向けゲームの開発も大変ですが、こちらはこちらで独特のノウハウが必要ですね。</p>
<p>また、 Windows ではヒートエイジングをやらないそうです。理由は「その前に Windows が落ちるから」だそうです（当時は 9x 系しか無かった）。なんて情けない OS でしょうか…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1484/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コンシューマゲーム機向けのゲーム開発は組み込み系、そう思っていた時代が私にもありました</title>
		<link>http://www.game-create.com/archives/1302</link>
		<comments>http://www.game-create.com/archives/1302#comments</comments>
		<pubDate>Sun, 08 Feb 2009 02:33:43 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[ハードウェア]]></category>
		<category><![CDATA[制御系]]></category>
		<category><![CDATA[組み込み系]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1302</guid>
		<description><![CDATA[私は、コンシューマゲーム機向けのゲーム開発は組み込み系という考えがありました。やはり、ちょっと違和感がありますよね。

コンシューマゲーム機向けのゲームの開発には、スタックサイズに強い制限があったり、例外やメタプログラミ [...]]]></description>
			<content:encoded><![CDATA[<p>私は、コンシューマゲーム機向けのゲーム開発は組み込み系という考えがありました。やはり、ちょっと違和感がありますよね。</p>
<p><span id="more-1302"></span></p>
<p>コンシューマゲーム機向けのゲームの開発には、スタックサイズに強い制限があったり、例外やメタプログラミングの採用に慎重にならざるを得なくなったり、ハードウェアへの深い理解が必要になったり、やってることは組み込み系と同じだなと思っていたのですが、やはり携帯電話みたいなデバイスとは少し違うのかもしれないというのが今の考えです。</p>
<p>世間一般的にはどうなのか大変気になる話題です。組み込み系ではないからといって制御系でもないような気がするのですが、いえ、なぜこのような話になるのかというと、やはりコンシューマゲーム機向けのゲーム開発が簡単に思われているような風潮に恐怖を感じたからです。せめて組み込み系も問題なくやってのけるくらいのスキルは必要だと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1302/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PC のスペックを調べるのに便利なツール</title>
		<link>http://www.game-create.com/archives/418</link>
		<comments>http://www.game-create.com/archives/418#comments</comments>
		<pubDate>Tue, 08 Jul 2008 08:52:02 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[スペック]]></category>
		<category><![CDATA[ハードウェア]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=418</guid>
		<description><![CDATA[Microsoft より PC のスペックを調べるのに便利なツールが公開されているようです。
Microsoft(R) System Check Tool for PC Games

ひとつだけ、新しい CPU になると [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft より PC のスペックを調べるのに便利なツールが公開されているようです。</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ab643af1-eef7-41af-908b-1fd9647396ee&#038;DisplayLang=ja" class="external">Microsoft(R) System Check Tool for PC Games</a></p>
<p><span id="more-418"></span></p>
<p>ひとつだけ、新しい CPU になると名前が取得できないという問題はあるのですが、基本的な数値目標は調べることができます。たとえば VRAM の総容量とか。</p>
<p>ぜひともバージョンアップして欲しいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/418/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>メインメモリの容量を取得する関数</title>
		<link>http://www.game-create.com/archives/135</link>
		<comments>http://www.game-create.com/archives/135#comments</comments>
		<pubDate>Sun, 04 Nov 2007 14:14:27 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Win32API]]></category>
		<category><![CDATA[ハードウェア]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=135</guid>
		<description><![CDATA[メインメモリの容量を取得する関数を発見しました。

その名も GlobalMemoryStatusEx() 。
総容量と空き容量が取得できますが、使用容量は総容量から空き容量を引き算して求める必要があります。
]]></description>
			<content:encoded><![CDATA[<p>メインメモリの容量を取得する関数を発見しました。</p>
<p><span id="more-135"></span></p>
<p>その名も GlobalMemoryStatusEx() 。</p>
<p>総容量と空き容量が取得できますが、使用容量は総容量から空き容量を引き算して求める必要があります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/135/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ビデオボードの名前を取得する関数</title>
		<link>http://www.game-create.com/archives/134</link>
		<comments>http://www.game-create.com/archives/134#comments</comments>
		<pubDate>Sat, 03 Nov 2007 13:48:04 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Win32API]]></category>
		<category><![CDATA[ハードウェア]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=134</guid>
		<description><![CDATA[プログラムからビデオボードの名称を調べる関数を発見しました。

その名も EnumDisplayDevices() 。
Enum という名前から想像できるとおり、失敗するまで繰り返すことで複数のビデオボードの名前を取得す [...]]]></description>
			<content:encoded><![CDATA[<p>プログラムからビデオボードの名称を調べる関数を発見しました。</p>
<p><span id="more-134"></span></p>
<p>その名も EnumDisplayDevices() 。</p>
<p>Enum という名前から想像できるとおり、失敗するまで繰り返すことで複数のビデオボードの名前を取得することが可能です。</p>
<p>あれ？どれがメインのビデオボードかわからないような気がする…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/134/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ハードウェアの情報を取得する方法</title>
		<link>http://www.game-create.com/archives/133</link>
		<comments>http://www.game-create.com/archives/133#comments</comments>
		<pubDate>Fri, 02 Nov 2007 10:51:15 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Win32API]]></category>
		<category><![CDATA[ハードウェア]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=133</guid>
		<description><![CDATA[配布したゲームが動かなかった場合、パソコンにあまり詳しくない人でもフィードバックを送れるよう、プログラムからハードウェアの情報を取得する方法を探しているのですが、なかなか見つかりません。
現状で最もイメージに近いソースを [...]]]></description>
			<content:encoded><![CDATA[<p>配布したゲームが動かなかった場合、パソコンにあまり詳しくない人でもフィードバックを送れるよう、プログラムからハードウェアの情報を取得する方法を探しているのですが、なかなか見つかりません。</p>
<p>現状で最もイメージに近いソースを載せておきます。随時加筆予定です。</p>
<p><span id="more-133"></span></p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-prepro">#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">stdio.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro">
#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">windows.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro">
#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">setupapi.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro">
#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">devguid.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro">
#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">regstr.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro">
#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">tchar.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro">

#pragma </span><span class="hl-identifier">comment</span><span class="hl-brackets">(</span><span class="hl-identifier">lib</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">setupapi.lib</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-prepro">

</span><span class="hl-types">int </span><span class="hl-identifier">main</span><span class="hl-brackets">(</span><span class="hl-types">int </span><span class="hl-identifier">argc</span><span class="hl-code">, </span><span class="hl-types">char</span><span class="hl-code"> *</span><span class="hl-identifier">argv</span><span class="hl-brackets">[])
{
  </span><span class="hl-identifier">HDEVINFO hDevInfo</span><span class="hl-code">;
  </span><span class="hl-identifier">SP_DEVINFO_DATA DeviceInfoData</span><span class="hl-code">;
  </span><span class="hl-identifier">DWORD i</span><span class="hl-code">;

  </span><span class="hl-comment">// Create a HDEVINFO with all present devices.
  </span><span class="hl-identifier">hDevInfo</span><span class="hl-code"> = </span><span class="hl-identifier">SetupDiGetClassDevs</span><span class="hl-brackets">(</span><span class="hl-prepro">NULL</span><span class="hl-code">,
                                 </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-comment">// Enumerator
                                 </span><span class="hl-number">0</span><span class="hl-code">,
                                 </span><span class="hl-identifier">DIGCF_PRESENT</span><span class="hl-code"> | </span><span class="hl-identifier">DIGCF_ALLCLASSES</span><span class="hl-brackets">)</span><span class="hl-code">;
  
  </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">hDevInfo</span><span class="hl-code"> == </span><span class="hl-identifier">INVALID_HANDLE_VALUE</span><span class="hl-brackets">) {
    </span><span class="hl-comment">// Insert error handling here.
    </span><span class="hl-reserved">return </span><span class="hl-number">1</span><span class="hl-code">;
  </span><span class="hl-brackets">}
       
  </span><span class="hl-comment">// Enumerate through all devices in Set.
  </span><span class="hl-identifier">DeviceInfoData</span><span class="hl-code">.</span><span class="hl-identifier">cbSize</span><span class="hl-code"> = </span><span class="hl-reserved">sizeof</span><span class="hl-brackets">(</span><span class="hl-identifier">SP_DEVINFO_DATA</span><span class="hl-brackets">)</span><span class="hl-code">;
  </span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">SetupDiEnumDeviceInfo</span><span class="hl-brackets">(</span><span class="hl-identifier">hDevInfo</span><span class="hl-code">, </span><span class="hl-identifier">i</span><span class="hl-code">, &amp;</span><span class="hl-identifier">DeviceInfoData</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">) {
    </span><span class="hl-identifier">DWORD DataT</span><span class="hl-code">;
    </span><span class="hl-identifier">LPTSTR buffer</span><span class="hl-code"> = </span><span class="hl-prepro">NULL</span><span class="hl-code">;
    </span><span class="hl-identifier">DWORD buffersize</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">;
           
    </span><span class="hl-comment">//
    // Call function with null to begin with, 
    // then use the returned buffer size (doubled)
    // to Alloc the buffer. Keep calling until
    // success or an unknown failure.
    //
    //  Double the returned buffersize to correct
    //  for underlying legacy CM functions that 
    //  return an incorrect buffersize value on 
    //  DBCS/MBCS systems.
    // 
    </span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">SetupDiGetDeviceRegistryProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">hDevInfo</span><span class="hl-code">,
                                             &amp;</span><span class="hl-identifier">DeviceInfoData</span><span class="hl-code">,
                                             </span><span class="hl-identifier">SPDRP_DEVICEDESC</span><span class="hl-code">,
                                             &amp;</span><span class="hl-identifier">DataT</span><span class="hl-code">,
                                             </span><span class="hl-brackets">(</span><span class="hl-identifier">PBYTE</span><span class="hl-brackets">)</span><span class="hl-identifier">buffer</span><span class="hl-code">,
                                             </span><span class="hl-identifier">buffersize</span><span class="hl-code">,
                                             &amp;</span><span class="hl-identifier">buffersize</span><span class="hl-brackets">)) {
      </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">GetLastError</span><span class="hl-brackets">()</span><span class="hl-code"> ==  </span><span class="hl-identifier">ERROR_INSUFFICIENT_BUFFER</span><span class="hl-brackets">) {
        </span><span class="hl-comment">// Change the buffer size.
        </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">buffer</span><span class="hl-brackets">) </span><span class="hl-identifier">LocalFree</span><span class="hl-brackets">(</span><span class="hl-identifier">buffer</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-comment">// Double the size to avoid problems on 
        // W2k MBCS systems per KB 888609. 
        </span><span class="hl-identifier">buffer</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">LPTSTR</span><span class="hl-brackets">)</span><span class="hl-identifier">LocalAlloc</span><span class="hl-brackets">(</span><span class="hl-identifier">LPTR</span><span class="hl-code">,</span><span class="hl-identifier">buffersize</span><span class="hl-code"> * </span><span class="hl-number">2</span><span class="hl-brackets">)</span><span class="hl-code">;
      </span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
        </span><span class="hl-comment">// Insert error handling here.
        </span><span class="hl-reserved">break</span><span class="hl-code">;
      </span><span class="hl-brackets">}
    }
           
    </span><span class="hl-identifier">_tprintf</span><span class="hl-brackets">(</span><span class="hl-identifier">TEXT</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">Result:[%s]</span><span class="hl-special">\</span><span class="hl-string">n</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-identifier">buffer</span><span class="hl-brackets">)</span><span class="hl-code">;
           
    </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">buffer</span><span class="hl-brackets">) </span><span class="hl-identifier">LocalFree</span><span class="hl-brackets">(</span><span class="hl-identifier">buffer</span><span class="hl-brackets">)</span><span class="hl-code">;
  </span><span class="hl-brackets">}
       
       
  </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">GetLastError</span><span class="hl-brackets">()</span><span class="hl-code"> != </span><span class="hl-identifier">NO_ERROR</span><span class="hl-code"> &amp;&amp;
      </span><span class="hl-identifier">GetLastError</span><span class="hl-brackets">()</span><span class="hl-code"> != </span><span class="hl-identifier">ERROR_NO_MORE_ITEMS</span><span class="hl-brackets">) {
    </span><span class="hl-comment">// Insert error handling here.
    </span><span class="hl-reserved">return </span><span class="hl-number">1</span><span class="hl-code">;
  </span><span class="hl-brackets">}
       
  </span><span class="hl-comment">//  Cleanup
  </span><span class="hl-identifier">SetupDiDestroyDeviceInfoList</span><span class="hl-brackets">(</span><span class="hl-identifier">hDevInfo</span><span class="hl-brackets">)</span><span class="hl-code">;

  </span><span class="hl-reserved">return </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-brackets">}</span></pre></div></div>
<p>次のリストは今後の課題です。</p>
<ul>
<li>ターゲットを絞って取得する方法を見つける</li>
<li>メインメモリやビデオメモリの容量を取得する方法を見つける</li>
<li>ハードディスクの容量を取得する方法を見つける</li>
</ul>
<p>ここまで苦戦するとは思いませんでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/133/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

