<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>川西 裕幸のブログ : Windows 7</title><link>http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx</link><description>Tags: Windows 7</description><dc:language>ja-JP</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>PDC 2009 (Nov. 19)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/11/20/9926027.aspx</link><pubDate>Fri, 20 Nov 2009 06:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9926027</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9926027.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9926027</wfw:commentRss><description>&lt;P&gt;PDC 2009 も最終日です。今日はキーノートもなく、以下のセッションに参加しました。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;[SVR10]Lighting up Windows Server 2008 R2 Using the ConcRT on UMS&lt;/LI&gt;
&lt;LI&gt;[VTL02]Axum: A .NET Language for Safe and Scalable Concurrency&lt;/LI&gt;
&lt;LI&gt;[CL03]DirectX11 DirectCompute&lt;/LI&gt;
&lt;LI&gt;[CL35]Custom Behaviors for Advanced Microsoft Silverlight UI Effects&lt;/LI&gt;
&lt;LI&gt;[CL24]XAML Futures in Microsoft .NET Framework, Microsoft Silverlight and Tools&lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/SVR10" mce_href="http://microsoftpdc.com/Sessions/SVR10"&gt;Lighting up Windows Server 2008 R2 Using the ConcRT on UMS&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;Agenda&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;アーキテクチャ概要&lt;/LI&gt;
&lt;LI&gt;タスク&lt;/LI&gt;
&lt;LI&gt;協調型ブロック&lt;/LI&gt;
&lt;LI&gt;UMS（User Mode Scheduling）&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20006_4.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20006_4.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 006" border=0 alt="PDC09 Nov.19 006" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20006_thumb_1.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20006_thumb_1.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;タスク スケジューラーとリソースマネージャについて（性能、生産性、プラットフォーム）。&lt;/P&gt;
&lt;P&gt;UMSスレッドをユーザーが使えることでプラットフォームを改善。UMSによってアプリは、OSに依存せずに、スケジューラーのふるまいを定義できる&lt;/P&gt;
&lt;P&gt;UMSをConcRT（同時実行ランタイム）が使うことによって、次のことが可能になる。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;細粒度の並列化&lt;/LI&gt;
&lt;LI&gt;より決定論的なふるまい&lt;/LI&gt;
&lt;LI&gt;より優れたキャッシュの局所性&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20009_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20009_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 009" border=0 alt="PDC09 Nov.19 009" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20009_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20009_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;タスクグループによってスレッド アフィニティを管理できる。タスクはスケジューラーによって実行するが、ワークスチーリング キューが負荷バランスをとる。&lt;/P&gt;
&lt;P&gt;64以上のプロセッサーをサポート（64ビットOSの場合）：SetThreadIdealProcessorEx&lt;/P&gt;
&lt;P&gt;OpenMPはC/Fortranに、MSの並列ライブラリーはC++に焦点を当てている。&lt;/P&gt;
&lt;P&gt;現在開発中のソフトウェアが10年後にも動作しているとしたら、それは80コアのPCで動作しているかもしれない。だから今から始める必要がある？&lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/VTL02" mce_href="http://microsoftpdc.com/Sessions/VTL02"&gt;Axum: A .NET Language for Safe and Scalable Concurrency by Niklas Gustafsson&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;並列プログラミングには見えない天井があるので（複雑さ・性能・スケーラビリティ）、新しいモデルが必要。Axumは並列のための新しいプログラミング モデルで、共有メモリーと純粋メッセージ渡しとのバランスをとることができる。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20010_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20010_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 010" border=0 alt="PDC09 Nov.19 010" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20010_thumb.jpg" width=213 height=161 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20010_thumb.jpg"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20011_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20011_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 011" border=0 alt="PDC09 Nov.19 011" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20011_thumb.jpg" width=214 height=161 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20011_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Axumのコンセプト&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;「チャンネル」は2つのエージェント間のメッセージを指揮するポートを定義&lt;/LI&gt;
&lt;LI&gt;「エージェント」はスレッドと同じようなアクティブなコンポーネントだが、共有排他状態へのアクセスが制限されている。チャンネル経由でメッセージを送る。&lt;/LI&gt;
&lt;LI&gt;「ドメイン」は複数のエージェントが共有する状態を定義。エージェントはドメイン内にホストされる。&lt;/LI&gt;
&lt;LI&gt;「スキーマ」はペイロードを定義。&lt;/LI&gt;
&lt;LI&gt;「プロトコル」はメッセージの正しい順序を定義。&lt;/LI&gt;
&lt;LI&gt;「データフロー ネットワーク」は演算間でデータを伝搬させる。&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;ダウンロード：&lt;A href="http://msdn.microsoft.com/devlabs/" mce_href="http://msdn.microsoft.com/devlabs/"&gt;http://msdn.microsoft.com/devlabs/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;ブログ：&lt;A href="http://blogs.msdn.com/maestroteam/" mce_href="http://blogs.msdn.com/maestroteam/"&gt;http://blogs.msdn.com/maestroteam/&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/P09-16" mce_href="http://microsoftpdc.com/Sessions/P09-16"&gt;DirectCompute Capturing the Teraflops&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;概要&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GPUをCPUのように記述&lt;/LI&gt;
&lt;LI&gt;問題セットの定義&lt;/LI&gt;
&lt;LI&gt;DirectComputeの使い方&lt;/LI&gt;
&lt;LI&gt;データの管理&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;GPUとCPU&lt;/P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=2 width=400&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;CPU&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;GPU&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;４コア&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;32 コア&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;４Float 幅 SIMD&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;32 Float 幅 SIMD&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;3GHz&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;1GHz&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;48-96GFlops&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;1 TeraFlops&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;2x Hyper Thread&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;32x “HyperThread”&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;64kB $L1/core&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;64kB $L1/core&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;20GB/s to Memory&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;150GB/s to Memory&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;$200&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;$200&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;200W&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;200W&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20012_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20012_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 012" border=0 alt="PDC09 Nov.19 012" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20012_thumb.jpg" width=210 height=158 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20012_thumb.jpg"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20013_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20013_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 013" border=0 alt="PDC09 Nov.19 013" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20013_thumb.jpg" width=206 height=156 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20013_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;GPUはデータ並列プロセッサー、CPUは25GFlops GPUは700GFLops&lt;/P&gt;
&lt;P&gt;DirectComputeの使い方&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;DirectComuoteの初期化&lt;/LI&gt;
&lt;LI&gt;.hlslにGPUコードを作成&lt;/LI&gt;
&lt;LI&gt;DirectX コンパイラーを使ってコンパイル&lt;/LI&gt;
&lt;LI&gt;そのコードをGPUにロード&lt;/LI&gt;
&lt;LI&gt;GPUバッファをセットアップ、アクセス用にビューをセットアップ&lt;/LI&gt;
&lt;LI&gt;データ ビューをカレントにする&lt;/LI&gt;
&lt;LI&gt;GPUでコードを実行&lt;/LI&gt;
&lt;LI&gt;データをCPUメモリーにコピー&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;HLSLは最も広く使われいているデータ並列プログラミング言語。&lt;/P&gt;
&lt;P&gt;DirectX Resource Type&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Buffer Resource Type: 構造化データ&lt;/LI&gt;
&lt;LI&gt;Image Media Resource Type： テクスチャ、1D, 2D, 3D, キューブ、配列&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;リソースビュー：リソースバッファのデータにアクセスするメカニズム&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GroupSharedレジスター：新しいレジスター&lt;/LI&gt;
&lt;LI&gt;一時レジスターは、汎用レジスター&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;データ並列I/O：1600のアクティブなスレッドのI/Oは容易ではない。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20016_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20016_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 016" border=0 alt="PDC09 Nov.19 016" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20016_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20016_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;ComputeShader 4.* vs 5.0&lt;/P&gt;
&lt;P&gt;ComputeShader 4.*では倍精度は扱わない、5.0から。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20017_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20017_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 017" border=0 alt="PDC09 Nov.19 017" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20017_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20017_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL08" mce_href="http://microsoftpdc.com/Sessions/CL08"&gt;Custom Behaviors for Advanced Microsoft Silverlight UI Effects&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;トリガー、アクション、ビヘイビアーのカスタマイズ&lt;/P&gt;
&lt;P&gt;Public class Grow : TrigggerAction&amp;lt;FrameworkElement&amp;gt; &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; protected override Invoke(object parameter){ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompositTransform transform = .... &lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;A title="&amp;#13;&amp;#10;http://blogs.msdn.com/expression/ " href="http://blogs.msdn.com/expression/"&gt;&lt;BR&gt;http://blogs.msdn.com/expression/ &lt;/A&gt;&lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL24" mce_href="http://microsoftpdc.com/Sessions/CL24"&gt;XAML Futures in Microsoft .NET Framework, Microsoft Silverlight and Tools&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;現在注力しているのは &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ランタイム構文解析&lt;/LI&gt;
&lt;LI&gt;静的分析&lt;/LI&gt;
&lt;LI&gt;コンパイル時&lt;/LI&gt;
&lt;LI&gt;デザイン時&lt;/LI&gt;
&lt;LI&gt;ローカリゼーション&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20021_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20021_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 021" border=0 alt="PDC09 Nov.19 021" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20021_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20021_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;XAMLデータモデル＝Object - Member - Value (O-M-V) + Type&lt;/P&gt;
&lt;P&gt;XAMLノード ストリーム：例えば、XAMLpadでイベントハンドルが可能に&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;IXamlTyoeResolver,&lt;/LI&gt;
&lt;LI&gt;IAmbientProvider&lt;/LI&gt;
&lt;LI&gt;IXamlSchemaContextProvider&lt;/LI&gt;
&lt;LI&gt;IRootObjectProvider&lt;/LI&gt;
&lt;LI&gt;IXamlNameResolver&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;ランタイム構文解析（パーサー）の改善&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;.NET4 はSystem.Xaml.dllを使用&lt;/LI&gt;
&lt;LI&gt;Silverlight 4にはまだ XamlScemaContext が必要&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;アナウンス&lt;/FONT&gt;&lt;/STRONG&gt;：XAML Toolkit &lt;A href="http://code.msdn.microsoft.com/xaml/" mce_href="http://code.msdn.microsoft.com/xaml/"&gt;http://code.msdn.microsoft.com/xaml/&lt;/A&gt; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;XAMLDom: XDocumentのXLinqのようなもの&lt;/LI&gt;
&lt;LI&gt;XAML FxCop&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20022_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20022_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 022" border=0 alt="PDC09 Nov.19 022" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20022_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20022_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;XAMLローカリゼーション&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;x:Uid か {MarkupExtension}か？&lt;/LI&gt;
&lt;LI&gt;Page.xaml.resx のような形でローカライズできることを考えている&lt;/LI&gt;
&lt;LI&gt;XAML Toolkit で公開する&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20024_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20024_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 024" border=0 alt="PDC09 Nov.19 024" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20024_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20024_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;お願い&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;.NET 4 Beta2 +System.Xaml.dll で初めて下さい&lt;/LI&gt;
&lt;LI&gt;XAML Toolkit CTP をダウンロードして下さい&lt;/LI&gt;
&lt;LI&gt;XAML改善のためフィードバックを下さい&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20025_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20025_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 025" border=0 alt="PDC09 Nov.19 025" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20025_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20025_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9926027" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Parallel/default.aspx">Parallel</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/PDC+2009/default.aspx">PDC 2009</category></item><item><title>PDC 2009 (Nov. 17)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/11/18/9924120.aspx</link><pubDate>Wed, 18 Nov 2009 06:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9924120</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9924120.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9924120</wfw:commentRss><description>&lt;P&gt;PDC 2009 の本番が始まりました、今年は1日減って3日間です。今日は以下のセッションに参加しました。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;キーノート&lt;/LI&gt;
&lt;LI&gt;[CL09] How Microsoft Visual Studio 2010 Was Built with Windows Presentation Foundation 4 &lt;/LI&gt;
&lt;LI&gt;[VTL32] Concurrency Fuzzing &amp;amp; Data Races &lt;/LI&gt;
&lt;LI&gt;[FT19] C++ Forever: Interactive Applications in the Age of Manycore&lt;/LI&gt;
&lt;LI&gt;[CL13] Windows Touch Deep Dive&lt;/LI&gt;
&lt;LI&gt;[FT03] Manycore and the Microsoft .NET Framework 4: A Match Made in Microsoft Visual Studio 2010 &lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/KEY01" mce_href="http://microsoftpdc.com/Sessions/KEY01"&gt;キーノート&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;Ray OzzieらがAzureのテクノロジーの話を、Bob MugliaらがAzureのレイヤーとビジネスの話をしました。ライブ中継があったらしいです。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20008_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20008_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.17 008" border=0 alt="PDC09 Nov.17 008" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20008_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20008_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL09" mce_href="http://microsoftpdc.com/Sessions/CL09"&gt;How Microsoft Visual Studio 2010 Was Built with Windows Presentation Foundation 4&lt;/A&gt; &lt;/H4&gt;
&lt;P&gt;Visual Studio 2010はWPFベースで作られており、その苦労話でした。&lt;/P&gt;
&lt;P&gt;WPFを使った理由&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;技術的証明&lt;/LI&gt;
&lt;LI&gt;アーキテクチャ的理由&lt;/LI&gt;
&lt;LI&gt;VS2010の重要な機能のため&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;どのWPF機能を使ったか？&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;XAMLを使った宣言UI&lt;/LI&gt;
&lt;LI&gt;データバインディング&lt;/LI&gt;
&lt;LI&gt;スタイル テンプレート&lt;/LI&gt;
&lt;LI&gt;アプリケーション リソース&lt;/LI&gt;
&lt;LI&gt;Win32との相互運用&lt;/LI&gt;
&lt;LI&gt;メッセージループとの統合&lt;/LI&gt;
&lt;LI&gt;DirectWriteを基にした新しいテキスト&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;段階的アプローチ&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;データモデルを定義&lt;/LI&gt;
&lt;LI&gt;メインウィンドウをWPFに置き換え&lt;/LI&gt;
&lt;LI&gt;新しいWindowマネージャとコマンドバーを書く&lt;/LI&gt;
&lt;LI&gt;一部のチームをスカウト（繰り返し）&lt;/LI&gt;
&lt;LI&gt;テスト、テスト、テスト&lt;/LI&gt;
&lt;LI&gt;テスト用に切り替え&lt;/LI&gt;
&lt;LI&gt;古いコードを取り除く&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;テストのコスト&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;過小評価していた&lt;/LI&gt;
&lt;LI&gt;しかし、チャンスでもあった（統合テストフレームワーク、UIオートメーション）&lt;/LI&gt;
&lt;LI&gt;データレイヤーでのテスト&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;挑戦だったのは&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;混合モード アプリ（ネイティブとマネージ、WPFとHWND Winフォーム）&lt;/LI&gt;
&lt;LI&gt;既存の拡張機能が動作するように&lt;/LI&gt;
&lt;LI&gt;開発をストップしてはならない&lt;/LI&gt;
&lt;LI&gt;テキストの品質と性能&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;混合モード アプリの挑戦&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;データレイヤーでの相互運用（マネージコードからネイティブ モデルにバインディング）&lt;/LI&gt;
&lt;LI&gt;プレゼンテーション レイヤーでの相互運用&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;デモ：フォーカスが動く問題&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20009_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20009_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.17 009" border=0 alt="PDC09 Nov.17 009" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20009_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20009_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;テキストと画像の品質&lt;/P&gt;
&lt;P&gt;性能&lt;/P&gt;
&lt;P&gt;メンバー：約12名とWPFチームとExpressionチーム&lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/VTL32" mce_href="http://microsoftpdc.com/Sessions/VTL32"&gt;Concurrency Fuzzing &amp;amp; Data Races by Madan Musuvathi(MSR)&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;同時実行は難しい&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;非決定論的&lt;/LI&gt;
&lt;LI&gt;Heisenbugsの結果&lt;/LI&gt;
&lt;LI&gt;観察がバグを修正してしまう&lt;/LI&gt;
&lt;LI&gt;大きな生産性の問題&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;MSRではCuzzとFeatherLiteを開発&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Cuzz: 百万回に1回のバグを見つけるツール&lt;/LI&gt;
&lt;LI&gt;FeatherLite: 軽量なデータ競合検出&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20012_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20012_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.17 012" border=0 alt="PDC09 Nov.17 012" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20012_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20012_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/FT19" mce_href="http://microsoftpdc.com/Sessions/FT19"&gt;C++ Forever: Interactive Applications in the Age of Manycore&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;VS2010のネイティブ並列ライブラリー&lt;/P&gt;
&lt;P&gt;Agenda&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;同時実行を容易にする&lt;/LI&gt;
&lt;LI&gt;カスタマイズ可能でスケーラブルな同時実行ランタイム&lt;/LI&gt;
&lt;LI&gt;共有状態の管理&lt;/LI&gt;
&lt;LI&gt;生産性のための並列開発ツール&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;並列パターン ライブラリー（PPL）：Task, Task group, Paralle Loos&lt;/P&gt;
&lt;P&gt;非同期エージェント ライブラリー：Agent, Souce and Target, 協調型送信と受信&lt;/P&gt;
&lt;P&gt;&lt;A href="http://code.msdn.com/concrtextras" mce_href="http://code.msdn.com/concrtextras"&gt;http://code.msdn.com/concrtextras&lt;/A&gt; にVS2010 Beta2 用のサンプルが更新されていました。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20016_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20016_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.17 016" border=0 alt="PDC09 Nov.17 016" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20016_thumb.jpg" width=207 height=156 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20016_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20017_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20017_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.17 017" border=0 alt="PDC09 Nov.17 017" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20017_thumb.jpg" width=209 height=158 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20017_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL13" mce_href="http://microsoftpdc.com/Sessions/CL13"&gt;Windows Touch Deep Dive&lt;/A&gt; &lt;/H4&gt;
&lt;P&gt;Win32マルチタッチAPIの話でした。&lt;/P&gt;
&lt;P&gt;Agenda&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;はじめに&lt;/LI&gt;
&lt;LI&gt;Windows Touch APIの概要&lt;/LI&gt;
&lt;LI&gt;実際のISVからの質問と解答&lt;/LI&gt;
&lt;LI&gt;デモ&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;タッチはチャンス&lt;/P&gt;
&lt;P&gt;Windows Touch APIs&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;WM_GESTURE&lt;/LI&gt;
&lt;LI&gt;WM_TOUCH&lt;/LI&gt;
&lt;LI&gt;マニピュレーションと慣性&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;デモ：3D マニピュレーション&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20018_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20018_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.17 018" border=0 alt="PDC09 Nov.17 018" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20018_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20018_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/P09-09" mce_href="http://microsoftpdc.com/Sessions/P09-09"&gt;Manycore and the Microsoft .NET Framework 4: A Match Made in Microsoft Visual Studio 2010&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;Agenda&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;なぜ並列か？なぜ今か？&lt;/LI&gt;
&lt;LI&gt;タスクが新しい最良の友達&lt;/LI&gt;
&lt;LI&gt;ループを活用&lt;/LI&gt;
&lt;LI&gt;並列を可視化&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;ムーアの法則はメニーコアシフトへ：10年以内に80コアになる&lt;/P&gt;
&lt;P&gt;並列化のオーバーヘッドを最小化：実装と実行どちらも&lt;/P&gt;
&lt;P&gt;新しい同期プリミティブ&lt;/P&gt;
&lt;P&gt;デモ：並列プロファイラーと並列デバッガー&lt;/P&gt;
&lt;P&gt;このセッションは昨日のワークショップと同じく Stephen Toubが講演しました。やはりスライドよりコードを書き、受講者からの質問に片っ端から答えるという日本人にはつらいスタイルでした。彼はマネージ並列のプログラム マネージャですが、本当にすごいと思います。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20021_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20021_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.17 021" border=0 alt="PDC09 Nov.17 021" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20021_thumb.jpg" width=216 height=163 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20021_thumb.jpg"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20022_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20022_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.17 022" border=0 alt="PDC09 Nov.17 022" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20022_thumb.jpg" width=216 height=163 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20022_thumb.jpg"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20024_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20024_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.17 024" border=0 alt="PDC09 Nov.17 024" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20024_thumb.jpg" width=217 height=164 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.17_9DE7/PDC09%20Nov.17%20024_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;【追記】各セッションのビデオへのリンクを追加しました&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924120" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Parallel/default.aspx">Parallel</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/PDC+2009/default.aspx">PDC 2009</category></item><item><title>Windows 7 ハンズオン ラボ ～Direct2D, DirectWrite~</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/09/04/9891202.aspx</link><pubDate>Fri, 04 Sep 2009 07:00:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9891202</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9891202.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9891202</wfw:commentRss><description>&lt;p&gt;Windows 7 の新しい Win32 APIである Direct2D と DirectWrite の実装を自習できるハンズオン ラボが公開されました。内容は以下の通りです。&lt;/p&gt;  &lt;h4&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/ee427969.aspx"&gt;Direct2D&lt;/a&gt;&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;描画用のターゲットを作成し、これを使用して、スクリーンへ描画する &lt;/li&gt;    &lt;li&gt;幾何学図形のオブジェクトを使用して、図形を描画し、これにグラデーションを付ける &lt;/li&gt;    &lt;li&gt;GDI サーフェイスに Direct2D のコンテンツを描画する方法を用いて、GDI ベースのアプリケーションのグラフィックス描画を強化する&lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/ee426939.aspx"&gt;DirectWrite&lt;/a&gt;&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;DirectWrite API を使用して、テキストの整形と配置を行う &lt;/li&gt;    &lt;li&gt;Direct2D API を使用して、テキストの描画を行う &lt;/li&gt;    &lt;li&gt;DirectWrite API のいつくかの異なる方法で描画する &lt;/li&gt;    &lt;li&gt;Direct2D API を介して、テキストをグラフィックスとして扱う &lt;/li&gt;    &lt;li&gt;テキストのカスタム レンダリング (custom text renderer) を実装する&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9891202" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>Windows ユーザー エクスペリエンス ガイドライン</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/08/25/9883190.aspx</link><pubDate>Tue, 25 Aug 2009 07:15:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9883190</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9883190.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9883190</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511258.aspx"&gt;Windows ユーザー エクスペリエンス ガイドライン日本語版&lt;/a&gt;（UXガイド）がMSDN ライブラリーに公開されました。このガイドラインはWindows 7用に更新された内容を日本語化し、さらに&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511282.aspx"&gt;フォント&lt;/a&gt;の項目に「メイリオとMeiryo UI」の解説が追加されています。&lt;/p&gt;  &lt;p&gt;同時に、特にデザイン原則とWindows 7 の新機能であるタスクバー、リボン、タッチなどを抜粋した、&lt;a href="http://msdn.microsoft.com/ja-jp/windows/ee340680.aspx"&gt;概要版&lt;/a&gt;のPDF・XPSも公開されました。TechEd Japan 2009では、この概要版を印刷した冊子が配布されるそうです。&lt;/p&gt;  &lt;h4&gt;目次（&lt;font color="#008000"&gt;緑色&lt;/font&gt;は概要版に収録されている項目）&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511328.aspx"&gt;デザイン原則&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#008000"&gt;Windows ユーザー エクスペリエンスのデザイン原則&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;よくあるガイドラインからの逸脱 &lt;/li&gt;    &lt;li&gt;&lt;font color="#008000"&gt;優れたユーザー エクスペリエンスをデザインする方法&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font color="#008000"&gt;パワフルかつシンプルに&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Windows Presentation Foundation を使ってデザイン &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511482.aspx"&gt;コントロール&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;バルーン &lt;/li&gt;    &lt;li&gt;チェック ボックス &lt;/li&gt;    &lt;li&gt;コマンド ボタン &lt;/li&gt;    &lt;li&gt;コマンド リンク &lt;/li&gt;    &lt;li&gt;ドロップダウン リストとコンボ ボックス &lt;/li&gt;    &lt;li&gt;グループ ボックス &lt;/li&gt;    &lt;li&gt;リンク &lt;/li&gt;    &lt;li&gt;リスト ボックス &lt;/li&gt;    &lt;li&gt;リスト ビュー &lt;/li&gt;    &lt;li&gt;進行状況バー &lt;/li&gt;    &lt;li&gt;段階的表示 &lt;/li&gt;    &lt;li&gt;ラジオ ボタン &lt;/li&gt;    &lt;li&gt;検索ボックス &lt;/li&gt;    &lt;li&gt;スライダー &lt;/li&gt;    &lt;li&gt;スピン コントロール &lt;/li&gt;    &lt;li&gt;ステータス バー &lt;/li&gt;    &lt;li&gt;タブ &lt;/li&gt;    &lt;li&gt;テキスト ボックス &lt;/li&gt;    &lt;li&gt;ツールヒントと情報ヒント &lt;/li&gt;    &lt;li&gt;ツリー ビュー &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511499.aspx"&gt;コマンド&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;メニュー &lt;/li&gt;    &lt;li&gt;ツール バー &lt;/li&gt;    &lt;li&gt;&lt;font color="#008000"&gt;リボン&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511287.aspx"&gt;テキスト&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ユーザー インターフェイス テキスト &lt;/li&gt;    &lt;li&gt;スタイルとトーン &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/dd535525.aspx"&gt;メッセージ&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;エラー &lt;/li&gt;    &lt;li&gt;警告 &lt;/li&gt;    &lt;li&gt;確認 &lt;/li&gt;    &lt;li&gt;通知 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511436.aspx"&gt;対話操作&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;キーボード &lt;/li&gt;    &lt;li&gt;マウスとポインター &lt;/li&gt;    &lt;li&gt;&lt;font color="#008000"&gt;タッチ&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;ペン &lt;/li&gt;    &lt;li&gt;アクセシビリティ &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511259.aspx"&gt;ウィンドウ&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ウィンドウの管理 &lt;/li&gt;    &lt;li&gt;ダイアログ ボックス &lt;/li&gt;    &lt;li&gt;コモン ダイアログ &lt;/li&gt;    &lt;li&gt;ウィザード &lt;/li&gt;    &lt;li&gt;プロパティ ウィンドウ &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511275.aspx"&gt;外観&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;レイアウト &lt;/li&gt;    &lt;li&gt;ウィンドウ枠 &lt;/li&gt;    &lt;li&gt;フォント &lt;/li&gt;    &lt;li&gt;色 &lt;/li&gt;    &lt;li&gt;アイコン &lt;/li&gt;    &lt;li&gt;標準アイコン &lt;/li&gt;    &lt;li&gt;グラフィック要素 &lt;/li&gt;    &lt;li&gt;サウンド &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/cc872776.aspx"&gt;エクスペリエンス&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ソフトウェアのブランド化 &lt;/li&gt;    &lt;li&gt;ファースト エクスペリエンス &lt;/li&gt;    &lt;li&gt;印刷 &lt;/li&gt; &lt;/ul&gt; &lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511443.aspx"&gt;Windows 環境&lt;/a&gt;   &lt;ul&gt;   &lt;li&gt;&lt;font color="#008000"&gt;デスクトップ&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;スタート メニュー &lt;/li&gt;    &lt;li&gt;&lt;font color="#008000"&gt;タスク バー&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;通知領域 &lt;/li&gt;    &lt;li&gt;Windows デスクトップ ガジェット &lt;/li&gt;    &lt;li&gt;コントロール パネル &lt;/li&gt;    &lt;li&gt;ヘルプ &lt;/li&gt;    &lt;li&gt;ユーザー アカウント制御 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/bb328626.aspx"&gt;ビジュアル索引&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/aa511441.aspx"&gt;用語集&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9883190" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/User+Experience/default.aspx">User Experience</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>WIndows 7 RTM 日本語版（MSDN サブスクリプション）</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/08/12/9865270.aspx</link><pubDate>Wed, 12 Aug 2009 03:56:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9865270</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9865270.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9865270</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/subscriptions/default.aspx"&gt;MSDN サブスクリプション&lt;/a&gt;から Windows 7 RTM 日本語版がダウンロードできるようになりました（言語を Japanese にしてください）。Language Packもあるので他言語向けの開発にも使えます。&lt;/p&gt;  &lt;p&gt;Windows SDK for Windows 7 をダウンロードするには、言語を English にしてください。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9865270" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>64bit 版の Windows SDK for Windows 7 (RTM)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/08/11/9863672.aspx</link><pubDate>Tue, 11 Aug 2009 03:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9863672</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9863672.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9863672</wfw:commentRss><description>&lt;P&gt;すでに ダウンロードセンターに Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (RTM)&amp;nbsp;の &lt;A href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505" mce_href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505"&gt;WebSetup&lt;/A&gt; と &lt;A href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=71deb800-c591-4f97-a900-bea146e4fae1" mce_href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=71deb800-c591-4f97-a900-bea146e4fae1"&gt;iso&lt;/A&gt; が公開されています&lt;STRIKE&gt;が、現在のところ、32bit 版（x86）だけのようです&lt;/STRIKE&gt;。&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;64bit 版（amd64 と ia64）の Windows SDK for Windows 7 (RTM)は &lt;/STRIKE&gt;&lt;A href="http://msdn.microsoft.com/ja-jp/subscriptions/default.aspx" mce_href="http://msdn.microsoft.com/ja-jp/subscriptions/default.aspx"&gt;&lt;STRIKE&gt;MSDN サブスクリプション&lt;/STRIKE&gt;&lt;/A&gt;&lt;STRIKE&gt;からダウンロードしてください。&lt;/STRIKE&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9863672" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Windows API Code Pack for Microsoft .NET Framework (v1.0)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/08/10/9862947.aspx</link><pubDate>Mon, 10 Aug 2009 09:27:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9862947</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9862947.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9862947</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack"&gt;Windows API Code Pack v1.0&lt;/a&gt; が公開されました。機能的には v0.9 と同じですね。D3D, D2D はサンプルコードもあるので、マネージコードでD3Dを！という方は試してみてください。残念ながらマルチタッチは含まれていません。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows 7 タスクバー ジャンプリスト、アイコン オーバーレイ、プログレスバー、タブ サムネイル、サムネイル ツールバー&lt;/li&gt;    &lt;li&gt;既知のフォルダー、Windows 7 ライブラリ、非ファイルシステム コンテナ、シェルオブジェクト用のドラッグ＆ドロップ機能 &lt;/li&gt;    &lt;li&gt;Windows 7 エクスプローラー ブラウザー コントロール &lt;/li&gt;    &lt;li&gt;シェル プロパティ システム &lt;/li&gt;    &lt;li&gt;Windows Vista と Windows 7 コモン ファイル ダイアログ（カスタム コントロールを含む） &lt;/li&gt;    &lt;li&gt;Windows Vista と Windows 7 のタスクダイアログ &lt;/li&gt;    &lt;li&gt;Direct3D 11.0、Direct3D 10.0/10.1、DXGI 1.0/1.1、Direct2D 1.0、DirectWrite、Windows Imaging Component (WIC) API（DirectWriteとWICは部分的なサポート） &lt;/li&gt;    &lt;li&gt;センサー プラットフォーム API &lt;/li&gt;    &lt;li&gt;拡張言語サービス API &lt;/li&gt;    &lt;li&gt;電源管理 API&lt;/li&gt;    &lt;li&gt;アプリケーション再起動・リカバリー API&lt;/li&gt;    &lt;li&gt;ネットワーク リスト マネージャ API&lt;/li&gt;    &lt;li&gt;コマンドリンク コントロールとシステム定義シェル アイコン&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9862947" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Win32, Silverlight 3, WPF 4 の Windows 7 マルチタッチへの対応</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/07/27/9849673.aspx</link><pubDate>Mon, 27 Jul 2009 08:48:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9849673</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9849673.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9849673</wfw:commentRss><description>&lt;p&gt;Windows 7 の新機能にマルチタッチがあります。Win32, Silverlight 3, WPF 4 はそれぞれ Windows 7 マルチタッチに対応していますが、それぞれ特徴があるのでここでまとめます。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd562197(VS.85).aspx"&gt;Win32&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd317341(VS.85).aspx"&gt;WM_TOUCH&lt;/a&gt; メッセージは最も下位レベルのメッセージで（生のメッセージ）、複数のタッチIDと位置などが取得できます。Win32 でこのメッセージを受け取るには RegisterTouchWindow を呼び出す必要があります。 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd353242(VS.85).aspx"&gt;WM_GESTURE&lt;/a&gt; メッセージは上位レベルのメッセージで、パン・ズーム・回転の情報を取得できます。Win32 ではデフォルトでこのメッセージを受け取れますが、RegisterTouchWindow を呼び出すと WM_TOUCH しか受け取れません、つまり WM_TOUCH と WM_GESTURE は排他です。 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd317309(VS.85).aspx"&gt;Manipulation &amp;amp; Inertia&lt;/a&gt; は WM_TOUCHと組み合わせて、ManipulationEventSink を実装することによって、移動や回転の慣性や減衰の処理ができます。 &lt;/li&gt;    &lt;li&gt;Windows 7 SDK にサンプルがあります。 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd894494(VS.95).aspx"&gt;Silverlight 3&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight 3 は WM_TOUCH にのみ対応します。 &lt;/li&gt;    &lt;li&gt;マルチタッチを処理するには、UIElementのようなオブジェクトにイベントハンドラーを追加するのではなく、System.Windows.Input.Touch.FrameReported にTouchFrameEventHandler イベントハンドラーを追加します。 &lt;/li&gt;    &lt;li&gt;そのコールバック内で、TouchFrameEventArg の GetPrimaryTouchPoint メソッドなどを使ってタッチポイントを取得します。 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2009/07/10/silverlight-3-quick-tip-multitouch-support-on-windows-7.aspx"&gt;DevCorner&lt;/a&gt;にサンプルがあります。 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb613588(VS.100).aspx"&gt;WPF ４&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Beta 1 では WM_TOUCH に対応していません（Beta 2 から対応予定）。 &lt;/li&gt;    &lt;li&gt;WPF ４ では Maniputaion &amp;amp; Inertia と WM_GESTURE が統合されています（Gestureという用語が使われていないので、分かりにくくなっています）。&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.uielement.manipulationmode(VS.100).aspx"&gt;UIElement.ManipulationMode&lt;/a&gt; に Translate, Scale, Rotate などを設定することにより、パン・ズーム・回転を処理できます。 &lt;/li&gt;    &lt;li&gt;OnManipulationStarted や OnManipulationDelta、あるいはOnInertiaStarted などをオーバーライドして、それぞれの動きを実装します。 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en"&gt;Visual Studio 2010 and .NET Framework 4 Training Kit - May Preview&lt;/a&gt; にサンプルがあります。 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;まとめるとこんな感じです。&lt;/p&gt;  &lt;table style="width: 421px; height: 100px" border="1" cellspacing="0" cellpadding="2" width="421"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="90"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="105" align="center"&gt;WM_TOUCH&lt;/td&gt;        &lt;td valign="top" width="88" align="center"&gt;WM_GESTURE&lt;/td&gt;        &lt;td valign="top" width="84" align="center"&gt;Manip&amp;amp;Inertia&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="90"&gt;Win32&lt;/td&gt;        &lt;td valign="top" width="105" align="center"&gt;〇&lt;/td&gt;        &lt;td valign="top" width="88" align="center"&gt;◎&lt;/td&gt;        &lt;td valign="top" width="84" align="center"&gt;〇&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="90"&gt;Silverlight 3&lt;/td&gt;        &lt;td valign="top" width="105" align="center"&gt;〇&lt;/td&gt;        &lt;td valign="top" width="88" align="center"&gt;×&lt;/td&gt;        &lt;td valign="top" width="84" align="center"&gt;×&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="90"&gt;WPF 4(Beta1)&lt;/td&gt;        &lt;td valign="top" width="105" align="center"&gt;× (Beta2で対応)&lt;/td&gt;        &lt;td valign="top" colspan="2" align="center"&gt;〇&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9849673" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>Direct2D の紹介 (MSDNマガジン6月号)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/07/15/9833820.aspx</link><pubDate>Wed, 15 Jul 2009 07:26:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9833820</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9833820.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9833820</wfw:commentRss><description>&lt;p&gt;MSDNマガジン6月号に「&lt;a href="http://msdn.microsoft.com/ja-jp/magazine/dd861344.aspx"&gt;Direct2Dの紹介&lt;/a&gt;」記事が載っています。&lt;/p&gt;  &lt;p&gt;GDI, D3D, WPFなどとの比較もあります。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9833820" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>Media Foundation ⑥ WebCam + WPF XAMLとC#の実装</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/07/07/9821139.aspx</link><pubDate>Tue, 07 Jul 2009 04:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9821139</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9821139.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9821139</wfw:commentRss><description>&lt;P&gt;それでは XAMLとC#を実装しましょう。次のようにビデオ画像と、スライダーで回転・スケールを行うので、XAMLではD3DImageと2つのスライダー（とラベル）を宣言します。一つのスライダーはD3DImageの回転角度に、もう一つはD3DImageのXScaleとYScaleにバインディングします。&lt;/P&gt;
&lt;P&gt;D3DImageはSystem.Windows.Interop名前空間にあるので、名前空間の追加に注意してください。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPFXAMLC_CC85/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPFXAMLC_CC85/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPFXAMLC_CC85/image_thumb_1.png" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPFXAMLC_CC85/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;C#の実装&lt;/H4&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-bidi-font-size: 11.0pt" lang=EN-US&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/hiroyuk/archive/2009/03/30/9517928.aspx" mce_href="http://blogs.msdn.com/hiroyuk/archive/2009/03/30/9517928.aspx"&gt;D3DImage チュートリアル&lt;/A&gt;との違いは、初期化時にビデオのサイズを取得していることと、Rendering イベントハンドラーとコールバックを宣言する代わりに、&lt;STRONG&gt;Windows メッセージを処理するためのコールバック&lt;/STRONG&gt;（ここではBltVideo）を HWndSourceクラスのAddHookメソッドを使って宣言することです。そのあとで一回目の非同期サンプリング命令（Sample）を呼び出します。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: blue"&gt;readonly&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;D3DWrapper&lt;/SPAN&gt; myD3DScene = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;D3DWrapper&lt;/SPAN&gt;(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #2b91af; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt;HwndSource&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt; source;&lt;/STRONG&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;const&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; WM_PAINT = 0x000F; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;int&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; videoWidth = 0; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;int&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; videoHeight = 0;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: left; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;... &lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: left; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; StartDXRendering() &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;{ &lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; (!myD3DImage.IsFrontBufferAvailable) &lt;BR&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;return&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #2b91af; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;IntPtr&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; scene = myD3DScene.Initialize( &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; new&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: #2b91af"&gt;WindowInteropHelper&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;).Handle, &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; ref&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; videoWidth, &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; ref&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; videoHeight); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;myD3DImage.Lock(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;myD3DImage.SetBackBuffer( &lt;BR&gt;&lt;SPAN style="COLOR: #2b91af"&gt;D3DResourceType&lt;/SPAN&gt;.IDirect3DSurface9, scene); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; myD3DImage.Unlock(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt;source = &lt;SPAN style="COLOR: #2b91af"&gt;HwndSource&lt;/SPAN&gt;.FromHwnd( &lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;WindowInteropHelper&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;).Handle); &lt;BR&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt;source.AddHook(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;HwndSourceHook&lt;/SPAN&gt;(BltVideo)); &lt;BR&gt;myD3DScene.Sample();&lt;/STRONG&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-bidi-font-size: 11.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BltVideo では WM_PAINT メッセージかどうかを確認して、D3DImageの内容を更新します。そのあとで、メッセージの処理完了を示す handled を true にし、次の非同期サンプリング命令を呼び出します。&lt;/P&gt;
&lt;P style="TEXT-ALIGN: left; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt; BltVideo( &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt; hwnd, &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; msg, &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt; wParam,&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt; lParam, &lt;SPAN style="COLOR: blue"&gt;ref&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; handled) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; (msg == WM_PAINT) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; { &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myD3DImage.Lock(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myD3DImage.AddDirtyRect( &lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Int32Rect&lt;/SPAN&gt;(0, 0, videoWidth, videoHeight)); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myD3DImage.Unlock(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; handled = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myD3DScene.Sample();&lt;/STRONG&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; } &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; return&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt;.Zero; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;ソリューションを添付するので、WebCam のついた PC でビルド・実行してみてください。動作環境は以下の通りです。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows 7 (RC) &lt;/LI&gt;
&lt;LI&gt;Windows 7 SDK (RC) &lt;/LI&gt;
&lt;LI&gt;Visual Studio 2008 SP1 &lt;/LI&gt;
&lt;LI&gt;DirectX SDK (Mar 2009) &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9821139" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/hiroyuk/attachment/9821139.ashx" length="33973" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Media+Foundation/default.aspx">Media Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>Media Foundation ⑤ WebCam + WPF プロジェクトの作成とC++の実装</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/07/06/9818413.aspx</link><pubDate>Mon, 06 Jul 2009 04:14:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9818413</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9818413.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9818413</wfw:commentRss><description>&lt;p&gt;以前紹介したMedia Foundation の &lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/06/09/9712615.aspx"&gt;MFCaptureD3D サンプル&lt;/a&gt;を基に、WebCam のビデオ出力を D3DImage 経由で WPF で表示してみましょう。WPF で表示できれば、回転やスケールは思いのままですし、ブラーなどのエフェクトも容易です。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPF1_E9C5/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPF1_E9C5/image_thumb.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;WPFソリューションの作成と混合アセンブリに変換&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/04/02/9528272.aspx"&gt;D3DImage チュートリアル&lt;/a&gt;を参考にして、WPFソリューションを作成し、MFCaptureD3Dプロジェクトを追加し、&lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/04/06/9533228.aspx"&gt;C++/CLIの混合アセンブリ&lt;/a&gt;に変換します。マニフェストは明示的に追加しなくても、自動生成のもので構いません。ついでに、&lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/04/13/9546623.aspx"&gt;WPFプロジェクトの設定&lt;/a&gt;もしておいてください。&lt;/p&gt;  &lt;h4&gt;C++コードの編集&lt;/h4&gt;  &lt;p&gt;まず、キャプチャしたビデオを表示するウィンドウを生成し、メッセージポンプを定義している winmain.cpp を「プロジェクトから除外」します。次にD3DWrapper.cppを追加します。D3DWrapper.cppの内容は以下の通りです。初期化するときにD3Dサーフェイスとビデオの幅と高さを取得して、呼び出し元（つまりC#側）に返します。あとは、SampleメソッドでのMFReaderの非同期サンプリングの命令と、クリーンアップだけです。非同期サンプリングなので、このSampleメソッドが返っても、サンプリングは終了していません。初期化時にMFStartupを、クリーンアップ時にMFShutdownを呼び出していることにも注意してください。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;#include&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: #a31515"&gt;&amp;quot;MFcaptureD3D.h&amp;quot;&lt;/span&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;#include&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: #a31515"&gt;&amp;lt;vcclr.h&amp;gt;&lt;/span&gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;CPreview* g_pPreview;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;namespace&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; MFCaptureViewer      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;{      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; D3DWrapper&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;:&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IntPtr Initialize(IntPtr hwnd, &lt;span style="color: blue"&gt;int&lt;/span&gt;% width, &lt;span style="color: blue"&gt;int&lt;/span&gt;% height)&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LPDIRECT3DSURFACE9 g_pd3dSurface;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MFStartup(MF_VERSION);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if&lt;/span&gt; (SUCCEEDED(CPreview::CreateInstance((HWND)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hwnd.ToPointer(),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (HWND)hwnd.ToPointer(),&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;amp;g_pPreview)))       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Get Surface        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; g_pPreview-&amp;gt;m_draw.m_pSwapChain-&amp;gt;GetBackBuffer      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (0,D3DBACKBUFFER_TYPE_MONO, &amp;amp;g_pd3dSurface);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Video width &amp;amp; height        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; width = g_pPreview-&amp;gt;m_draw.m_width;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; height = g_pPreview-&amp;gt;m_draw.m_height;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return&lt;/span&gt; IntPtr(g_pd3dSurface);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; return&lt;/span&gt; IntPtr::Zero;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;VOID Sample()&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;g_pPreview-&amp;gt;m_pReader-&amp;gt;ReadSample(       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0,&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;NULL, &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;NULL,&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;NULL,&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;NULL&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;VOID Cleanup()&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;g_pPreview-&amp;gt;Release();&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;MFShutdown();       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;}&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;};       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;device.h と device.cpp&lt;/h4&gt;  &lt;p&gt;device.cppでは主にD3D系の処理を行っています。まずバックバッファのD3DSrufaceとビデオの幅・高さを D3DWrapperで取得できるように、device.hで4つのプロパティをパブリックにします。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;public&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;:      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; UINT&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;m_width;&amp;#160; &lt;span style="color: green"&gt;// moved to public&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;UINT&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;m_height; &lt;span style="color: green"&gt;// moved to public&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IDirect3DSwapChain9&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;*m_pSwapChain; &lt;span style="color: green"&gt;// moved to public&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;DrawDevice(); &lt;span style="color: green"&gt;// moved to public&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;virtual ~DrawDevice();&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;device.cpp では、マルチスレッドの解決、およびスワップチェーンのブリットは不要なので、次の2か所を変更します。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = m_pD3D-&amp;gt;CreateDevice(       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;D3DADAPTER_DEFAULT,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;D3DDEVTYPE_HAL,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hwnd,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;D3DCREATE_HARDWARE_VERTEXPROCESSING |&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; D3DCREATE_FPU_PRESERVE &lt;strong&gt;|        &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;strong&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;D3DCREATE_MULTITHREADED&lt;/strong&gt;, &lt;font color="#008000"&gt;// Add &lt;/font&gt;&lt;span style="color: green"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;pp,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;m_pDevice       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;);&lt;/span&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;…&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Present the frame.        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Removed        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// hr = m_pDevice-&amp;gt;Present(NULL, NULL, NULL, NULL);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h4&gt;preview.hと preview.cpp&lt;/h4&gt;  &lt;p&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;preview.cpp では主にMF関連の処理を行っています。まず、D3DWrapperで使えるように preview.h で2つのプロパティをパブリックにします。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;public&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;:      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; IMFSourceReader&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;*m_pReader; &lt;span style="color: green"&gt;// moved to public&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;DrawDevice&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;m_draw;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// moved to public&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;preview.cpp では、以下の2つのメソッドを変更します。前者で追加しているのは winmain.cppで行われていたWebCamデバイスを取得するコードです。後者では、非同期のコールバック内で次のサンプリングを呼び出していたのを、WM_PAINT メッセージの送付に変更しています（必ずしもWM_PAINTでなければならないわけではありません）。WPFではこのメッセージを基にD3DImageへの書き込みを行います。灰色は変更しないコードです。&lt;/font&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;HRESULT CPreview::Initialize()        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;{        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;HRESULT hr = S_OK;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = m_draw.CreateDevice(m_hwndVideo);&lt;/font&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;// &lt;/span&gt;&lt;/span&gt;Add to get WebCam         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; IMFActivate **ppDevices;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; UINT32&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;count = 0;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; IMFAttributes *pAttributes=NULL;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; hr = MFCreateAttributes(&amp;amp;pAttributes,1);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; hr = pAttributes-&amp;gt;SetGUID(      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE,&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; hr = MFEnumDeviceSources(pAttributes, &amp;amp;ppDevices, &amp;amp;count);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; if&lt;/span&gt; (count &amp;gt;0)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hr = &lt;span style="color: blue"&gt;this&lt;/span&gt;-&amp;gt;SetDevice(ppDevices[0]);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160; // done        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color="#808080"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;return hr;         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;…&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;HRESULT CPreview::OnReadSample(        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;HRESULT hrStatus,         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;DWORD ,         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;DWORD ,         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;LONGLONG ,         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IMFSample *pSample&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/font&gt;&lt;span style="color: green"&gt;&lt;font color="#808080"&gt;// Can be NULL          &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;)         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;{        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;HRESULT hr = S_OK;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IMFMediaBuffer *pBuffer = NULL;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EnterCriticalSection(&amp;amp;m_critsec);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (FAILED(hrStatus))         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = hrStatus;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;goto done;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (pSample)         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: green"&gt;&lt;font color="#808080"&gt;// Get the video frame buffer from the sample.          &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = pSample-&amp;gt;GetBufferByIndex(0, &amp;amp;pBuffer);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (FAILED(hr)) { goto done; }         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: green"&gt;&lt;font color="#808080"&gt;// Draw the frame.          &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = m_draw.DrawFrame(pBuffer);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (FAILED(hr)) { goto done; }         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/font&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160; // Add        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;hr = SendMessage(m_hwndEvent, WM_PAINT, 0, 0);&lt;/strong&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Request the next frame.        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Removed         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// hr = m_pReader-&amp;gt;ReadSample(        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0,         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NULL,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;// actual         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NULL,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;// flags         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NULL,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;// timestamp         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NULL&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;// sample         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;);         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;done:        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (FAILED(hr))         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NotifyError(hr);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;SafeRelease(&amp;amp;pBuffer);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;LeaveCriticalSection(&amp;amp;m_critsec);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;font color="#808080"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;return hr;         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;ここで追加した SendMessage が非同期サンプリング時のC++とC#との同期問題を解決するカギの一つです。&lt;/p&gt;  &lt;p&gt;この時点で、ソリューション エクスプローラーでこのMFCaptureD3Dプロジェクトを右クリックして、[プロジェクトのみ]→[MFCaptureD3Dのみをリビルド]を実行して、エラーが出ないことを確認してください。&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;つづく&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9818413" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Media+Foundation/default.aspx">Media Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>並行ランタイムと並列パターン ライブラリのサンプル</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/06/29/9808117.aspx</link><pubDate>Mon, 29 Jun 2009 06:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9808117</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9808117.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9808117</wfw:commentRss><description>&lt;P&gt;以前、「&lt;A href="http://blogs.msdn.com/hiroyuk/archive/2009/05/22/9634797.aspx" mce_href="http://blogs.msdn.com/hiroyuk/archive/2009/05/22/9634797.aspx"&gt;並列プログラミング サンプル .NET 4 Beta 1&lt;/A&gt;」を紹介しましたが、ネイティブ Win32 のサンプルも「&lt;A href="http://code.msdn.microsoft.com/concrtextras" mce_href="http://code.msdn.microsoft.com/concrtextras"&gt;並行ランタイムと並列パターン ライブラリ（PPL）のコードサンプル&lt;/A&gt;」として公開されています。「&lt;A href="http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%9C%E3%83%8A%E3%83%83%E3%83%81%E6%95%B0" mce_href="http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%9C%E3%83%8A%E3%83%83%E3%83%81%E6%95%B0"&gt;フィボナッチ数&lt;/A&gt;」を求めたり、「&lt;A href="http://ja.wikipedia.org/wiki/%E9%A3%9F%E4%BA%8B%E3%81%99%E3%82%8B%E5%93%B2%E5%AD%A6%E8%80%85%E3%81%AE%E5%95%8F%E9%A1%8C" mce_href="http://ja.wikipedia.org/wiki/%E9%A3%9F%E4%BA%8B%E3%81%99%E3%82%8B%E5%93%B2%E5%AD%A6%E8%80%85%E3%81%AE%E5%95%8F%E9%A1%8C"&gt;食事をする哲学者&lt;/A&gt;」などのサンプルがあります。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9808117" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Parallel/default.aspx">Parallel</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>RDP 7 の変更</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/06/26/9804555.aspx</link><pubDate>Fri, 26 Jun 2009 03:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9804555</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9804555.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9804555</wfw:commentRss><description>&lt;p&gt;Windows 7 の RDP（リモート デスクトップ プロトコル）では、以下のように（PDC 08の資料）多くのテクノロジーがクライアントでレンダリングされる予定でした（RCでは有効です）。&lt;/p&gt;  &lt;p&gt;クライアントでレンダリングできれば、ホストから送られるデータが減らせるためネットワーク帯域の負荷が減らせるとともに、ホスト側の負荷も軽減できます。ホストレンダリングでは、レンダリング結果を毎フレーム 画像として送るので（もちろん何らかの圧縮は掛けますが...）、非効率なため高品質なデスクトップを生成できません。Direct3D や Direct2D のクライアント レンダリング能力は、リモートデスクトップでクライアント側にあるGPU性能がフルに活用できる興味深い仕様でした。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_thumb.png" width="484" height="296" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;ところが、&lt;a href="http://blogs.msdn.com/rds/archive/2009/06/19/changes-to-remoting-model-in-rdp-7.aspx"&gt;RDP チームのブログ&lt;/a&gt;によると、Direct2DとDirect3D 10.1 のクライアント レンダリングは Windows 7 RTM 版から取り除かれたそうです（こんな感じ）。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_thumb_1.png" width="484" height="300" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;しかし、RDP 7 で Aero Glass は有効ですし、GDIとメディア プレイヤーはクライアント レンダリングなので、クライアント側にある GPU 上のコンポジターはリモートで利用可能なままのようです。&lt;/p&gt;  &lt;p&gt;しかし、RDP チームはクライアント レンダリング機能の強化を続けているので、将来のバージョンアップでは D3D10などもクライアントレンダリング可能になるのでしょう。&lt;/p&gt;  &lt;p&gt;RDPでAero Glassを有効にするには Windows 7 のリモートデスクトップ接続のオプションからデスクトップ コンポジションを有効にする必要があります。Windows Server 2008 R2での設定については、&lt;a href="http://blogs.msdn.com/rds/archive/2009/06/23/aero-glass-remoting-in-windows-server-2008-r2.aspx"&gt;RDPチームのブログ&lt;/a&gt;を参照してください。&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_thumb_2.png" width="484" height="438" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9804555" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Media+Foundation/default.aspx">Media Foundation</category></item><item><title>Media Foundation ④ WebCam + WPF 同期か非同期か</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/06/25/9802935.aspx</link><pubDate>Thu, 25 Jun 2009 07:57:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9802935</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9802935.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9802935</wfw:commentRss><description>&lt;p&gt;Windows 7 SDk (RC) にある Media Foundation のサンプル &lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/06/09/9712615.aspx"&gt;MFCaptureD3D&lt;/a&gt; を使って WPF で WebCam のビデオを表示してみましょう。D3DSurface → D3DImage → WPF という流れは、以前 &lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/03/30/9517928.aspx"&gt;D3DImage チュートリアル&lt;/a&gt;で紹介したとおりですが、WebCam の画像をWPFで表示するときには、同期サンプリングか非同期サンプリングかのどちらの戦略をとるかを選ばなければなりません。&lt;/p&gt;  &lt;h4&gt;非同期サンプリング&lt;/h4&gt;  &lt;p&gt;MFCaptureD3D では元々サンプリングを非同期で行っています。アトリビュート ストアでMF_SOURCE_READER_ASYNC_CALLBACKを指定し、非同期コールバックを設定しています。&lt;/p&gt;  &lt;p&gt;&lt;font color="#008000"&gt;// ③非同期コールバックを設定&lt;/font&gt;    &lt;br /&gt;&lt;font face="Consolas"&gt;hr = pAttributes-&amp;gt;SetUnknown(      &lt;br /&gt;&amp;#160; MF_SOURCE_READER_ASYNC_CALLBACK,       &lt;br /&gt;&amp;#160; this       &lt;br /&gt;&amp;#160; );&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;サンプリングを待つ時間を他のUIスレッドで使えるので、WPFのようなアプリには非同期が理想的です。&lt;/p&gt;  &lt;p&gt;このサンプルコードでは 非同期コールバックの場所として this が指定されているので、サンプリングが完了すると自クラスの OnReadSample メソッドが呼び出されます。このメソッドで、サンプリングした画像をD3DSurfaceに書き込んでから、C++ から C# に何らかのメッセージを送ってD3DSurfaceにビデオ画像が書き込まれたことを通知する仕組みが必要です。&lt;/p&gt;  &lt;h4&gt;同期サンプリング&lt;/h4&gt;  &lt;p&gt;以前の D3DImage チュートリアルでは、C# 側から Render メソッドで C++ の Direct3D レンダリングを実行し、それが戻ったら、ロックして AddDirtyRect メソッドでブリットしていました。同期サンプリングの戦略であれば、WebCam から画像を取得し D3DSrufaceへの書き込みを待ってブリットするという、同じ手順でレンダリングできます。&lt;/p&gt;  &lt;p&gt;しかし、WebCam デバイスのサンプリングには待ち時間が発生します。しかも1秒間に30フレーム程度確保しようとすると、待ち時間は全体のかなりの割合を占める可能性があります。その間 UI を操作できず、パフォーマンスが悪化する可能性があります。&lt;/p&gt;  &lt;p&gt;同期サンプリングを実装するには、アトリビュートストアに前述の非同期指定（MF_SOURCE_READER_ASYNC_CALLBACK）を入れずに、ソースリーダーを取得して、次のようにReadSampleを呼び出すだけです。同期サンプリングでは ReadSample が帰ったときにサンプル画像が取得できます（実装では取得できるまでサンプリングを繰り返します）。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;DWORD dwStream;     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;DWORD dwFlags;     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;IMFSample* pSample = NULL;     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;LONGLONG llTimeStamp;     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;while&lt;/span&gt;( !pSample )      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; {     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; hr = m_pReader-&amp;gt;ReadSample(     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0,     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;#160;&amp;#160; &amp;amp;dwStream,      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;dwFlags,      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;llTimeStamp,      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;#160;&amp;#160; &amp;amp;pSample      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;     &lt;p&gt;結論として、今回のサンプルコードでは、&lt;strong&gt;非同期サンプリングの戦略&lt;/strong&gt;で実装することにしました。両方とも実装してテストしてみましたが、やはり同期サンプリングでは UI 操作の引っ掛かりが発生することと、C++ コードの修正が多くなるためです。&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9802935" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>TechEd 2009 オープンステージ</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/06/23/9798682.aspx</link><pubDate>Tue, 23 Jun 2009 05:37:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9798682</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9798682.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9798682</wfw:commentRss><description>&lt;p&gt;8月26日-28日に開催される&lt;a href="http://www.microsoft.com/japan/teched/2009/"&gt;TechEd 2009&lt;/a&gt; では、&lt;a href="http://www.microsoft.com/japan/teched/2009/connect/openstage.mspx"&gt;オープンステージ&lt;/a&gt;で「&lt;strong&gt;Media Foundation (Win32) の新機能 @ Windows 7&lt;/strong&gt;」を話します。短い時間ですが、このブログでも紹介した、ビデオキャプチャやMFPlayの話をしようと思います。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9798682" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item></channel></rss>