社本@元ネオニート Blog

社本@元ネオニート (元々ワック) のいたずら書き (for Programmers)


AILight Blogs

目次

Blog 利用状況

ニュース

過去の記事

カテゴリ

イメージ ギャラリー

その他 リンク集

2010年3月8日 #

WinZip を使ったコマンドラインでの圧縮

WinZip を使ったコマンドラインでの圧縮する方法です。
ま、イチイチ説明しなくても分かるでしょう。。

start /wait WinZip -min -a -r "%1%.zip" "%1%"

posted @ 16:12 | Feedback (0)

2010年1月23日 #

Microsoft.Jet.OLEDB.4.0 のx64用ドライバ

---
VS2008で、MDBからSQL Serverへのコンバートプログラムを作っているときに
こんなメッセージが出ちゃいました。

ふむ、、、

調べてみると、x64だとこのメッセージが出るそうです。

ということで、「プロジェクト」の「プロパティ」を表示して、
「ビルド」のタブを選択して、「プラットフォームターゲット」を「x86」にします。
---


Beta版ですがx64用のドライバがリリースされていますよ!

今更、こんなの使う必要ないんじゃないの?って思う人がいるかもしれませんが、
(てか、私も思っていましたw)教育の場では結構使われているようです。


■'Microsoft.Jet.OLEDB.4.0' プロバイダはローカルのコンピュータに登録されていません。 - 石野光仁 Blog
http://www.ailight.jp/blog/ishino/archive/2010/01/19/28141.aspx

■2010 Office system Beta ドライバ: データ接続コンポーネント - Microsoft
http://www.microsoft.com/downloads/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=ja

posted @ 17:45 | Feedback (4)

2010年1月13日 #

日本のTV番組を録画してアメリカで視聴

元々、日本では1ヶ月で1~2時間くらいしかTVは見てなかったんですが、アメリカに来る前に、
"日本のTV番組を録画してアメリカで視聴"できるようにしてきました。ここ2年間、使っていますが、
特に問題なく使えています。

別に難しいことをしてるわけではないのですが、興味ある人がいるかと思いますので、簡単に方法を
紹介したいと思います。


1.日本にTVチューナー+Media Centerを使えるPCを設置

録画ができれば何でもいいんでしょうけど、Media Centerで録画を行うことにしました。番組表でも
タイトルでも予約ができるので、必要十分かと思います。リモートデスクトップ経由で、録画予約を
行っています。

なお、地デジだと特殊なチューナーでも買わないと、録画した番組が他のPCで見れないので注意が
必要です。うーむ。

Media Centerが使えるWindowsは、以下のとおりです。
・Windows XP Media Center Edition
・Windows Vista Home Premium/Ultimate Edition
・Windows 7 Home Premium 以上

■Vista標準搭載の「Windows Media Center」をチェック - PC Watch
http://bb.watch.impress.co.jp/static/vista/wmc/2007/02/07/index.html


2.MCEBuddy をインストール

Media Centerで録画すると、dvr-msという特殊な形式の動画が作成されます。普通のMP2ファイルで
作成できるといいんですけどね。それよりも、アメリカに動画ファイルを送るには大きすぎるのが問題です。

1のPCにMCEBuddyをインストールすると、Media Centerが録画した動画ファイルが格納されるフォルダを
監視し、WMVファイル等にコンバートしてくれます。

私は使っていませんが、広告の除去もできるようです。

■Media Center の .dvr-ms 形式の動画を変換する (MCEBuddy)
http://techno-st.net/2008/04/16/media-center-dvrms-mcebuddy.html

■MCEBuddy
http://mcebuddy.com/


3.Windows Live Sync をインストール

WMVファイルを日本からアメリカに移動するために、Windows Live Syncをインストールします。
バックグラウンドで少しずつコピーしてくれるので便利です。当然ですが、日本とアメリカの両方に
インストールが必要です。

■無料サービス“Windows Live Sync”で複数PCのファイルをらくらく同期! - 窓の杜
http://www.forest.impress.co.jp/article/2009/05/28/live_sync_sp.html

■Windows Live Sync
https://sync.live.com/


個人的には、更に3の前にタスクスケジューラを使って、数時間ごとに録画された動画を、
番組ごとのフォルダに移動するようにしています。

■Windows/Vista/タスクスケジューラーでバッチファイルを実行する方法
http://tobysoft.net/wiki/index.php?Windows%2FVista%2F%A5%BF%A5%B9%A5%AF%A5%B9%A5%B1%A5%B8%A5%E5%A1%BC%A5%E9%A1%BC%A4%C7%A5%D0%A5%C3%A5%C1%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%BC%C2%B9%D4%A4%B9%A4%EB%CA%FD%CB%A1

posted @ 10:53 | Feedback (0)

2010年1月12日 #

インテル オレゴン工場

インテルと言えばシリコンバレーと考えてしまいがちですが、オレゴンにも多くの施設があります。先日発表されたArrandale(モバイル向けCore)や悪名高いPentium 4はここのチームが開発したものだったと思います。



大きな地図で見る












実はわざわざ行ったのではなく、偶然、見つけただけだったんですけどねw


■2010年のモバイル機器市場を占う - PC Watch
http://pc.watch.impress.co.jp/docs/column/mobile/20091225_339614.html

■ヒミツ主義に包まれたIntelのプロセッサ製造拠点を暴く - @IT
http://www.atmarkit.co.jp/fpc/motoazabu/022_2001-07-13/intels_fab.html

■Intel,一部施設を閉鎖へ,最大6000人に影響 - ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20090122/323225/

posted @ 18:54 | Feedback (0)

Bing




うちから歩いて5分くらいのところにあるMSNが入っているビルです。レドモンドではなくベルビューにあります。2月にこちらに来る人は見れるかも?

なお、そこから歩いて1分のところにExpediaの本社があります。

posted @ 18:13 | Feedback (0)

2009年11月26日 #

Visual Studio 2010 Beta 2 の不具合&要望 その2

Visual Studio 2010 Beta 2 の不具合&要望を、いくつか追加しました。

■フローティング状態のダイアログバーのキャプションをダブルクリックした場合、ドッキングしないで最大化する - Microsoft Connect (*)
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=514786

■Property Manager が、日本語化されていない - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=514724


■ソース管理エクスプローラーの左側のペーンに、エンコード、ファイルサイズを表示して欲しい - Microsoft Connect (*)
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=514811

■ソース管理エクスプローラーで、D&Dによるフォルダーの移動をできるようにして欲しい - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=514807


特に深刻なものや興味深そうなリンクの後ろに、(*)をつけておきました。

posted @ 22:00 | Feedback (0)

x64用のurl.libが入っていない - Windows SDK その2

Visual Studio 2010 Beta 2 に付属のWindows SDKにも、x64用の
url.libが入っていません。Visual Studio 2005 の時から未だに
修正されてないんだけど、誰も報告してないんだろうか。。
やっぱり、Microsoft Connect で報告するしかないのかなぁ?


なお、x64用 の msi.lib は入っていました!


■x64用のurl.libが入っていない - Windows SDK
http://www.ailight.jp/blog/sha256/archive/2007/04/23/13766.aspx

■x86用のmsi.libが入っていない - VS2005
http://www.ailight.jp/blog/sha256/archive/2007/04/24/13768.aspx

posted @ 20:45 | Feedback (0)

2009年11月24日 #

Visual Studio 2010 Beta 2 の不具合&要望

Microsoft Connect に、Visual Studio 2010 Beta 2の不具合&要望を
投稿しました。もし、再現できるものがある場合には、ステータスの
下にある"私もです" に、賛同できるものがある場合には、件名の
横の上三角(▲) をクリックしてください。


■プロセスにアタッチダイアログで、アタッチ先のコードの種類に"マネージ (v3.5、v3.0)"が存在しない - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513395

■書式設定のタブにある "タブとインデントのサイズ"が切れている - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513394

■C#の行間の書式設定で、文尾に"。"がついているものとついていないものが混在する - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513393

■VC++のMFC Class Wizard が、全く日本語化されていない - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513390

■メニュー内の接続に関する表記が統一されていない - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513258

■プロジェクトを開くダイアログで、VC++のフィルタのみ日本語化されていない - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513256

■VC++のプロジェクトメニューの"Class Wizard"の名前が不適切である- Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513254

■VC++のプロジェクトメニューの"Rescan Solution"が、日本語化されていない - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513238

■新しいプロジェクト ダイアログ上の"Add source control" が、日本語化されていない - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513235

■TFS 2010 でソースコードの管理をしている場合、VC++でWindows From (CLR) のファイル名の変更がソリューションエクスプローラ上で失敗する - Microsoft Connect (*)
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513233

■F#のランタイムの名称がVC++のランタイムの名称と統一されていない - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513223

■プログラムのアンインストールで、会社名が入っていないプログラムがある - Microsoft Connect (*)
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=511699

■VCのランタイムを表す名称が統一されていない - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=511685

■日本語版を表す表記が統一されていない - Microsoft Connect (*)
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=511676

■CMFCShellTreeCtrl::EnumObjects の実装が正しくない - Microsoft Connect (*)
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=404696


■Visual Studio インストーラーのプロジェクトを作成した場合、起動条件をデフォルトで追加して欲しい - Microsoft Connect (*)
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513244

■TFSで、ファイルの共有をできるようにして欲しい - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513243

■TFSで、フォルダーの移動をできるようにして欲しい - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513242

■Visual Studio に、リボンを採用して欲しい - Microsoft Connect
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513241

■ソリューション プラットフォームに、x64 を最初から追加しておいて欲しい - Microsoft Connect (*)
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=513240

■一括でアンインストールできるようにして欲しい - Microsoft Connect (*)
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=511681


特に深刻なものや興味深そうなリンクの後ろに、(*)をつけておきました。

posted @ 17:48 | Feedback (0)

2009年11月23日 #

リボンの豆知識

Microsoft Office 2007からメニューとツールバーに変わり導入されたリボンの
豆知識です。


・タブの上でマウスのホイールを回転させると、選択しているタブが変わる
・タブをダブルクリックすると、リボンの表示・非表示が切り替わる
・Office 2010 から、リボンの表示・非表示を切り替えるボタンが追加される


。。どーでもいい話で、すみません

posted @ 1:21 | Feedback (0)

2009年11月20日 #

"Code Complete"の著者であるSteve McConnell さんの講演

名著"Code Complete"の著者であるSteve McConnell さんが、World-
Class Software Organizations についての講演を、私が通っている
カレッジ(Bellevue College)で行ったので、聴きに行ってきました。





よく知らなかったのですが、今はConstruxという会社のCEOおよびCTO
として働いているそうです。Microsoft 本社のあるRedmond から車で
20分、私のアパートから歩いてたったの10-15分という場所でした。



大きな地図で見る


面白かったのは、世界クラスのソフトウエアの組織の特質についての
説明でした。


Attributes of World-Class Software Organizations

- Top talent
- Support for top talent
- Strong sense of mission
- High degree of alignment with the mission
- Real business accountability
- Commitment to quality (variously defined)
- Frequent introspection
(learning from mistake)
- "Standard" practices become highly adapted to local environment
- High degree of staff commitment, but as an effect of the other factors, not as a cause





講演が終わったあと、Code Completeにサインをしてもらう人で列が
できていましたw


■Steve McConnell
http://www.stevemcconnell.com/

■10x Software Development
http://blogs.construx.com/blogs/stevemcc/default.aspx

■UWTV Program: Steve McConnell, Construx - University of Washington
http://www.uwtv.org/programs/displayevent.aspx?rID=2325

■Construx
http://www.construx.com/

posted @ 16:04 | Feedback (0)

2009年11月17日 #

Office 2007 でインプレイス・アクティベーション

#世間的には、Office 2010 Betaで盛り上がってそうですが。。

Office 2007から、今までのメニューとツールバーから、リボンを使った
ユーザインターフェースに大きく変わりました。

インプレイス・アクティベーションのユーザインターフェース上の大きな
特徴の1つは、自然な形で、二つのアプリケーションのメニューがマージされ、
ツールバーが切り替わることです。

さて、メニューとツールバーが廃止されたOffice 2007で、どのように
インプレイス・アクティベーションが表現されるのか実験してみました。





。。かなりカッコ悪いですね。

posted @ 19:46 | Feedback (1)

2009年11月16日 #

Hyper-V 上に、Windows Servr 2003 をインストール

Hyper-V 上に、Windows Servr 2003 with SP1をインストール
してみました。

統合サービスをインストールしようとしたら、SP2をインストール
しないといけないらしい。

仕方なくSP2をダウンロードしようとしたら、ネットワークアダプタの
ドライバが標準でインストールされていないので、Windows Updateが
実行できない。。

そこでSP2のISOイメージを別のPCでダウンロードしてインストールしたら、
無事に統合サービスもインストールでき、ネットワークアダプタも使えるよう
になりました。


■Windows Server 2003 Service Pack 2 (32 ビット x86) - ISO-9660 CD イメージ ファイル - Microsoft
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=1b9fe9e4-1d57-4698-a5cf-db271ed6d90a

■Windows Server 2003 Service Pack 2, x64 Editions - ISO-9660 CD イメージ ファイル - Microsoft
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=8a6ebfb5-833d-44e2-bf92-44648a8bb250

posted @ 20:56 | Feedback (0)

2009年11月14日 #

Sea-Tac空港からダウンタウン・シアトルまでの鉄道が12月19日に開通

これまた来年のGlobal MVP Summit に来る人への情報です。

今まで、Sea-Tac空港からダウンタウン・シアトルへの移動は
タクシー、普通のバス、乗り合いバスなどしかありませんでした。

普通のバスは2.5ドルと割安なのですが、混んでる時間には
大きなバッグを持ち込みづらいという難点がありました。
また、慣れていないとバスに乗るのも難しいですし。

しかし、12月19日にSea-Tac空港からダウンタウン・シアトルまで
鉄道が開通するので、かなり楽になるかと思います!

ダウンタウン・シアトルでは、バスと電車が同じ地下トンネルを
走るそうなので、きっと見たら変な感じがするんでしょうね。


。。なーんて書いたけど、ツアーのバスを使わないのは、
いつものごく一部の人たちだけか。


■Light Rail comes to Sea-Tac Airport December 19 - tulwilakomo
http://tukwila.komonews.com/content/light-rail-comes-sea-tac-airport-december-19

posted @ 15:08 | Feedback (2)

2009年11月12日 #

Sea-Tac空港で、無料Wi-Fiが使えるように

来年のGlobal MVP Summit に来る人への朗報です。


今まで Sea-Tac 空港でWi-Fi を使うためには、AT&T に1日10ドル近く
お金を払う使う必要がありました。

しかし、Google がSea-Tac 空港をはじめ47の空港に無料のWi-Fi の設置を
行うようになるそうです。(来年の1月からは空港自身が無料サービスを行う模様)


■Free Wi-Fi at Sea-Tac, courtesy of Google - Seattle PI
http://blog.seattlepi.com/thebigblog/archives/184665.asp

posted @ 9:20 | Feedback (0)

2009年11月5日 #

Windows Live Sync の制限

Windows Live Sync の制限です。

1ファイル当たり最大 4 GBというのはちょっと厳しいなぁ。
VHDファイルやISOファイルが送れないじゃーん。


・最大20 フォルダーまで
・1 フォルダー当たり最大 20,000 ファイルまで
・1 ファイル当たり最大 4 GBまで
・ネットワーク ドライブは使えない


■Windows Live ヘルプ
http://help.live.com/Help.aspx?mkt=ja-JP&project=WL_Sync

posted @ 18:37 | Feedback (0)

2009年10月30日 #

USB充電機能付きのサージプロテクタ電源タップ

こんなのを発見。Amazon.com で見ると、$17とお手ごろ。




うー。買っちゃおうかな。。


■Belkin Mini Surge Protector with USB Charger - Belkin
http://www.belkin.com/IWCatProductPage.process?Product_Id=400738

■Belkin BZ103050vTVL Mini Surge Protector/Dual USB Charger - Amazon.com
http://www.amazon.com/Belkin-BZ103050vTVL-Surge-Protector-Charger/dp/B0017HF3XO

posted @ 19:00 | Feedback (1)

2009年10月26日 #

Windows Virtual PC 上に、Windows Server 2008 R2がインストールできない。

早速、Windows Virtual PC 上へ、Windows Server 2008 R2 を
インストールしてみました。


しかし、インストールの最初の時点でエラーが発生


Windows Server 2008 R2 は、32bit 版が廃止され、64 bit 版のみリリース
されちます。しかし、Windows Virtual PC は、64 bit OS をサポートしていない
のが原因ではないかと思われます。

posted @ 6:23 | Feedback (0)

VAIO VGN-FW用のIntel VTが有効になるBIOSがリリース

待ちに待ってたVAIO VGN-FW用のIntel VTが有効になるBIOSが
リリースされました。(他の機種のアップデートも出てます。)

これで、Hyper-V 2.0 や Windows Virtual PC が楽しめます!


■Intel Virtualization Technology(インテル バーチャライゼーション・テクノロジー)機能への対応
http://search.vaio.sony.co.jp/qasearch/solution/S0909011066196/?p=&q=Intel%20VT%20VAIO

posted @ 6:10 | Feedback (0)

2009年10月17日 #

来週、Microsoftの初の小売店がオープン

以前、日本のニュースでも紹介されてましたが、アリゾナ州スコッツデールに
来週、Microsoftの初の小売店がオープンするようです。94インチ!の大画面で
Xbox 360のゲームができるらしいですよ。面白そう。

Apple Store みたいに、オシャレな感じになるんでしょうかねぇ?


スコッツデールって、どこ?と思い調べてみたら、アメリカでも指折りの
リゾート地らしいです。


大きな地図で見る


シアトル近郊に作ってくれれば、見に行くんですけどねぇ。


■First Microsoft retail store could open next week - Seattle PI
http://blog.seattlepi.com/microsoft/archives/182226.asp

posted @ 13:55 | Feedback (0)

2009年10月9日 #

VAIO で、Intel VTが有効になるBIOSがリリースする(予定)

SONY から正式にIntel VT が有効になるBIOSがリリース
する(予定)らしいです!!


なんと、VAIOシリーズは、わざわざBIOSレベルでIntel VTを
無効にしてたんですよ、今まで。
#裏技でBIOSのデータを書き換えるという方法もありますけど


これで、Windows Server 2008 R2 を入れて、Hyper-V で
楽しむことができます!Winddows XP modeもね。


■Intel Virtualization Technology(インテル バーチャライゼーション・テクノロジー)機能への対応
http://search.vaio.sony.co.jp/qasearch/solution/S0909011066196/?p=&q=Intel%20VT%20VAIO

posted @ 17:30 | Feedback (0)

2009年9月25日 #

VHDブートのデメリット - Windows 7

Windows 7/Windows Server 2008 R2 からサポートされたVHDブート。
本当に便利で気のきいた機能だと思うのですが、今さらメリットを書いても 仕方ないので、デメリットでも。。


(1) システムの評価 (Windows エクスペエリエンス インデックス) が計測できなくなる

実行することはできるんですけど、ディスクのデータ転送速度の評価ではねられます。 ディスク以外の項目だけでも表示してくれればいいのにねぇ。


(2) サスペンドができなくなる

ラップトップPCを使っている場合には、ちょっと不便ですね。


他にも何かあれば、是非、教えてください。

posted @ 9:55 | Feedback (0)

2009年8月27日 #

VHDファイルをアタッチ・デタッチするバッチファイル

VHDファイルの作成やアタッチ・デタッチするには、管理コンソールだけではなく
DiskPartコマンドも使うことができます。

しかし、DiskPartコマンドは、通常のコマンドのようにシングルライン モードで
使うことができないので、バッチファイルで使用するには一工夫が必要です。

以下のように一工夫を加えると、VHDファイルのアタッチ・デタッチをバッチファイルの
中で行うことができます


---
@echo on
rem Attach VHD file

set VHDFile="D:\Virtual Hard Disks\Users.vhd"
set ScriptFile="%cd%\DiskPart.txt"

del %ScriptFile%
echo select vdisk file=%VHDFile% >> %ScriptFile%
echo attach vdisk >> %ScriptFile%
echo exit >> %ScriptFile%

diskpart /s %ScriptFile%
del %ScriptFile%
---
--- @echo on
rem Detach VHD file

set VHDFile="D:\Virtual Hard Disks\Users.vhd"
set ScriptFile="%cd%\DiskPart.txt"

del %ScriptFile%
echo select vdisk file=%VHDFile% >> %ScriptFile%
echo detach vdisk >> %ScriptFile%
echo exit >> %ScriptFile%

diskpart /s %ScriptFile%
del %ScriptFile%
---

posted @ 8:28 | Feedback (0)

2009年8月7日 #

英語版のWindows 7 RTM が、ダウンロードできます!

英語版のWindows 7 RTM が、MSDNサブスクライバ・ダウンロードでダウンロードできるようになってます!SDKもダウンロードできるけど、Windows Server 2008 R2は、まだダウンロードできないようです。。

英語版じゃイヤだって思う人もいるかもしれませんが、Ultimateならインストール後に表示言語を日本語に切り替えてしまえば、日本語版と何も変わりありませんよ。

posted @ 5:23 | Feedback (1)

2009年8月6日 #

VMware Guest SDK

ちょっと面白いそうかなと思い、VMware Guest SDK を触ってみました。
しかし、残念ながらこのSDKだと大したことできないようです。
#今度、VMware infrastructure SDK で遊んでみようっと。

使う人がいるとは思えませんが、とりあえずラッパクラスを公開します。


---
#pragma once

// Created by Akihiro Shamoto on August 5th 2009.

#if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__)
#include <memory>
#endif

#include "vmGuestLib.h"
#ifdef _WIN32
#pragma comment(lib, "win32\\vmGuestLib.lib")
#endif
#ifdef _WIN64
#pragma comment(lib, "win64\\vmGuestLib.lib")
#endif


////////////////////////////////////////////////////////////////////////////////
// CVMGuestLibHandleT

template <bool t_bManaged>
class CVMGuestLibHandleT  
{
protected:
 typedef CVMGuestLibHandleT<t_bManaged>    thisClass;

public:
 CVMGuestLibHandleT(__in bool bOpened = true)
 {
  m_handle = NULL;
  if (bOpened)
  {
   this->Open();
  }
 }
 CVMGuestLibHandleT(__in VMGuestLibHandle handle)
 {
  m_handle = NULL;
  this->Attach(handle);
 }
 virtual ~CVMGuestLibHandleT()
 {
  if (t_bManaged && m_handle != NULL)
  {
   this->Close();
  }
 }

public:
 bool IsValid()
 {
  return m_handle ? true : false;
 }

public:
 void Attach(__in VMGuestLibHandle handle)
 {
  ATLASSERT(m_handle == NULL);
  ATLASSERT(handle != NULL);
  m_handle = handle;
 }
 VMGuestLibHandle Detach()
 {
  ATLASSERT(m_handle != NULL);
  HMODULE hModule = m_handle;
  m_handle = NULL;
  return hModule;
 }

public:
 CVMGuestLibHandleT& operator =(__in VMGuestLibHandle handle)
 {
  this->Close();
  this->Attach(hModule);
  return *this;
 }
 operator VMGuestLibHandle() const
 {
  return m_handle;
 }
 VMGuestLibHandle GetHandle()
 {
  return m_handle;
 }

public:
 VMGuestLibError Open()
 {
  ATLASSERT(m_handle == NULL);
  return ::VMGuestLib_OpenHandle(&m_handle);
 }
 VMGuestLibError Close()
 {
  ATLASSERT(m_handle != NULL);
  VMGuestLibError result = ::VMGuestLib_CloseHandle(m_handle);
  m_handle = NULL;
  return result;
 }

public:
 VMGuestLibError UpdateInfo()
 {
  ATLASSERT(m_handle != NULL);
  return ::VMGuestLib_UpdateInfo(m_handle);
 }

 VMGuestLibError GetSessionId(__out VMSessionId* id)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(id != NULL);
  return ::VMGuestLib_GetSessionId(m_handle, id);
 }
 VMGuestLibError GetCpuReservationMHz(__out uint32* cpuReservationMHz)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(cpuReservationMHz != NULL);
  return ::VMGuestLib_GetCpuReservationMHz(m_handle, cpuReservationMHz);
 }
 VMGuestLibError GetCpuLimitMHz(__out uint32* cpuLimitMHz)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(cpuLimitMHz != NULL);
  return ::VMGuestLib_GetCpuLimitMHz(m_handle, cpuLimitMHz);
 }
 VMGuestLibError GetCpuShares(__out uint32* cpuShares)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(cpuShares != NULL);
  return ::VMGuestLib_GetCpuShares(m_handle, cpuShares);
 }
 VMGuestLibError GetCpuUsedMs(__out uint64* cpuUsedMs)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(cpuUsedMs != NULL);
  return ::VMGuestLib_GetCpuUsedMs(m_handle, cpuUsedMs);
 }
 VMGuestLibError GetHostProcessorSpeed(__out uint32* mhz)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(mhz != NULL);
  return ::VMGuestLib_GetHostProcessorSpeed(m_handle, mhz);
 }
 VMGuestLibError GetMemReservationMB(__out uint32* memReservationMB)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memReservationMB != NULL);
  return ::VMGuestLib_GetMemReservationMB(m_handle, memReservationMB);
 }
 VMGuestLibError GetMemLimitMB(__out uint32* memLimitMB)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memLimitMB != NULL);
  return ::VMGuestLib_GetMemLimitMB(m_handle, memLimitMB);
 }
 VMGuestLibError GetMemShares(__out uint32* memShares)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memShares != NULL);
  return ::VMGuestLib_GetMemShares(m_handle, memShares);
 }
 VMGuestLibError GetMemMappedMB(__out uint32* memMappedSizeMB)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memMappedSizeMB != NULL);
  return ::VMGuestLib_GetMemMappedMB(m_handle, memMappedSizeMB);
 }
 VMGuestLibError GetMemActiveMB(__out uint32* memActiveMB)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memActiveMB != NULL);
  return ::VMGuestLib_GetMemActiveMB(m_handle, memActiveMB);
 }
 VMGuestLibError GetMemOverheadMB(__out uint32* memOverheadMB)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memOverheadMB != NULL);
  return ::VMGuestLib_GetMemOverheadMB(m_handle, memOverheadMB);
 }
 VMGuestLibError GetMemBalloonedMB(__out uint32* memBalloonedMB)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memBalloonedMB != NULL);
  return ::VMGuestLib_GetMemBalloonedMB(m_handle, memBalloonedMB);
 }
 VMGuestLibError GetMemSwappedMB(__out uint32* memSwappedMB)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memSwappedMB != NULL);
  return ::VMGuestLib_GetMemSwappedMB(m_handle, memSwappedMB);
 }
 VMGuestLibError GetMemSharedMB(__out uint32* memSharedMB)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memSharedMB != NULL);
  return ::VMGuestLib_GetMemSharedMB(m_handle, memSharedMB);
 }
 VMGuestLibError GetMemSharedSavedMB(__out uint32* memSharedSavedMB )
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memSharedSavedMB != NULL);
  return ::VMGuestLib_GetMemSharedSavedMB(m_handle, memSharedSavedMB);
 }
 VMGuestLibError GetMemUsedMB(__out uint32* memUsedMB)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(memUsedMB != NULL);
  return ::VMGuestLib_GetMemUsedMB(m_handle, memUsedMB);
 }
 VMGuestLibError GetElapsedMs(__out uint64* elapsedMs)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(elapsedMs != NULL);
  return ::VMGuestLib_GetElapsedMs(m_handle, elapsedMs);
 }
 VMGuestLibError GetResourcePoolPath(__inout size_t *bufferSize, __out char *pathBuffer)
 {
  ATLASSERT(m_handle != NULL);
  ATLASSERT(bufferSize != NULL);
  ATLASSERT(pathBuffer != NULL);
  return ::VMGuestLib_GetResourcePoolPath(m_handle, bufferSize, pathBuffer);
 }
#if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__)
#ifndef _CSTRING_NS
 VMGuestLibError GetResourcePoolPath(CStringA& strPathBuffer)
#else
 VMGuestLibError GetResourcePoolPath(_CSTRING_NS::CStringA& strPathBuffer)
#endif
 {
  ATLASSERT(m_handle != NULL);
  strPathBuffer.Empty();

  VMGuestLibError result = VMGUESTLIB_ERROR_SUCCESS;

  size_t bufferSize = 512;
  while (true)
  {
   std::auto_ptr<char> pathBuffer(new char[bufferSize]);
   result = ::VMGuestLib_GetResourcePoolPath(m_handle, &bufferSize, pathBuffer.get());
   if (result != VMGUESTLIB_ERROR_SUCCESS)
   {
    if (result == VMGUESTLIB_ERROR_BUFFER_TOO_SMALL)
    {
     continue;
    }

    return result;
   }

   strPathBuffer = pathBuffer.get();
   break;
  }

  return result;
 }
#endif
protected:
 VMGuestLibHandle m_handle;
};

typedef CVMGuestLibHandleT<false>  CVMGuestLibHandleHandle;
typedef CVMGuestLibHandleT<true>  CVMGuestLibHandle;
---

posted @ 16:03 | Feedback (2)

2009年7月24日 #

Open Packaging Caonvenctions - Windows 7

Windows 7 で、Open Packaging Caonvenctions に関するAPIが提供されます。
Open Packaging Caonvenctions というのは、一言で言ってしまうと、21世紀の
OLE複合ドキュメントです。(笑) このファイル内ファイルシステムを使って、
Office Open XML も各アイテムを保存しています。(実態は、ZIPファイルです)


パッケージ、パーツ、リレーションシップと言った新しい用語が出てくるの
ですが、以下のようにOLE複合ドキュメントの用語に合致すると思います。

パッケージ (IOpcPackage) : ストレージ (IStorage)
パーツ (IOpcPart) : ストリーム (IStream)
リレーションシップ (IOpcRelationship) : モニカー (IMoniker)

ただしIOpcPartはIStreamを置き換えるものではありません。
実際にパーツの実態を操作するときは、IOpcPart::GetContentStream()を
使って、IStreamを取得することになります。


今は21世紀なので、COM形式のAPIだけではなくマネージ版APIも提供されます。
あと、デジタル署名に関するオブジェクトも多数用意されています。


個人的には、こんな大そうなものではなく、ZIPファイルを操作するAPIが
欲しいだけなんですけどね。。


■IOpcFactory Interface - MSDN
http://msdn.microsoft.com/en-us/library/dd370991(VS.85).aspx

■IOpcPackage Interface - MSDN
http://msdn.microsoft.com/en-us/library/dd371025(VS.85).aspx

■IOpcPart Interface - MSDN
http://msdn.microsoft.com/en-us/library/dd371038(VS.85).aspx

■IOpcRelationship Interface - MSDN
http://msdn.microsoft.com/en-us/library/dd371131(VS.85).aspx

posted @ 4:32 | Feedback (0)