« February 2008 | Main | April 2008 »

March 19, 2008

バンテージ・ポイント

バンテージ・ポイント 』 を劇場で鑑賞。

Photo_2

あらすじ:
スペイン・サラマンカ。シークレットサービスのトーマス・バーンズ(デニス・クエイド)は、同僚のテイラー(マシュー・フォックス)と共に、テロ撲滅サミットに出席するアシュトン米大統領(ウィリアム・ハート)の護衛にあたっていた。
ところが、広場で大群衆を前にした大統領に、1発の銃弾が...。一部始終を全世界にライブ中継していたTVプロヂューサーのレックス(シガーニー・ウィーヴァー)、パニックに陥った広場で偶然にも狙撃犯をビデオカメラで映したというアメリカ人観光者のハワード(フォレスト・ウィッテカー)など、鍵を握る目撃者は8人。しかし、彼らがそれぞれ異なる地点・立場から見たものは、くい違っていた。事件の裏に潜む真相を、たった一人で追い始めるバーンズ。錯綜する策略の中、彼は真実に辿り着けるのか。そして、すべての視点(バンテージ・ポイント)の先に見えてくる、衝撃の結末とは。

とにかく期待していた。8人それぞれの犯人像があり、そこから1人づつ絞り込まれ、あいつだ!と思わせておいてどんでん返し。そんなストーリーが、複数の視点を巧みに切り替えながら進んでゆく。勝手に決めつけた自分が悪いのだけれど、期待は見事に裏切られ肩透かしをくらってしまった...。

振り返ると平凡なストーリーのような気がしてならないです。途中から犯人はほぼ分かっていて、偶然録画されたていた映像を頼りに犯人らしき者を追いかけ、ありえない犯人のミスによって幕がおろされる。犯人の目的はなんだったのか?。裏切ってまで暗殺に協力した者の背景はなんだったのか?。何故犯人の一人が爆弾テロ自爆する必要があったのか?。偶然録画していた映像が犯人追跡のキーにはなったものの、それ以外は外堀を埋めるだけでインパクトに物足りなさを感じる。非常に表面的な印象で、後半はカーチェイスでごまかされてしまった感じ。変化があっていい面もあるけど、やっぱり絡み合った複数のストーリーが静かに解けてゆくって方が好みですね。

複数の関係者(8人)視点で話は進み、しだいに全体が見えてくるのは面白いと思いました。でも、それぞれのストーリーに変化が少ないというか、先に書いたように視点を変える意味が薄いんですよね。ただ事件の進行を助ける読み物のようになってしまっていて、それぞれの視点に意味があまりない。せっかく豪華なキャスティングなのに、登場人物を生かしていないのが本当にもったいない。8つの視点とか欲張らず、3~4人減らしてでも、キーマンをしっかりすれば編集の面白さでカバー出来たような気がします。全体的に???の多い作品でしたが、編集の面白さとカーチェイスは楽しめました。

- edit 2008.03.25 -
冷静になってみて、★2→★3に変更
- end edit -

| | Comments (1) | TrackBack (1)

March 06, 2008

Windows Vistaでデバイスアクセス

例えば、Windows VistaでUSB接続されたハードディスクにアクセスするアプリケーションを作成する場合、Visual C++ではCreateFile()を使用しデバイスのハンドルを取得しようとして失敗する場合があります。(というか、私は失敗しました)
で、原因の一つとして有力なのがUAC(User Account Control)と呼ばれるセキュリティ機能でしょう。通常はUACが有効であり、Adminアカウントでログオンしているだけではデバイスへのアクセス権が与えられないようです。
そこで、UACを無効にします。「ユーザーアカウント制御の有効化または無効化」から「ユーザーアカウント制御の有効化または無効化」のチェックを外しPCを再起動すればOK。
これでUSB接続したハードディスクのハンドルを取得出来るようになります。

次に、論理と物理の問題があります。CreateFileの第一引数であるlpFileNameですね。論理とは「¥¥.¥C」で物理とは「PHYSICALDRIVE0」を渡します。ココで、第二引数である dwDesiredAccess と第三引数 dwShareMode の設定がいい加減だと、物理でのハンドル取得に失敗したり、ディスクへのWriteコマンドエラーの原因となります。

CreateFile(lpFileName = \\\\.\\PhysicalDrive0
dwDesiredAccess = GENERIC_READ | GENERIC_WRITE
dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE
lpSecurityAttributes = NULL
dwCreationDisposition = OPEN_EXISTING
dwFlagsAndAttributes = NULL
hTemplateFile = NULL );

ですね。

あとはDeviceIoControl()にハンドルやら何やらを渡してあげて、エラー処理を作ってあげれば何とかなりそうな気がしますね。ってか動いてますが...。(Λ。Λ)

| | Comments (13) | TrackBack (0)

« February 2008 | Main | April 2008 »