仮面's profile宇宙仮面の C# 研究室.Live SpacePhotosBlogListsMore Tools Help

宇宙仮面の C# 研究室.Live Space

C#, Windows Mobile, X-Box360などに関連したブログです。
November 23

.NET Micro Framework 4.0 Features

Microsoftは、組み込みシステム向けの開発および実行環境である「.NET Micro Framework」の大部分をオープンソース化した。

今回のエンハンスポイントは次にような感じらしい。

  1. HTTP と HTTPs:
    System.Net.HttpWebRequest、System.Net.HttpWebResponse、および System.Net.HttpListener のサポート
  2. Multi-touch
    multi-touch イベントが、オブジェクト モデルと、エミュレータでサポート。 ジェスチャ サポートの再設計により高速化かつ柔軟性の向上。
  3. バージョン管理:
    以下、意味がよくわからないけれど、バージョン管理の強化。構築時と、デバイス上のアセンブリ バージョン番号で、厳密なバージョニング、および不足しているアセンブリの再配布。同じアセンブリで別のバージョン番号に属する型のサイドバイサイドロードとバインドをサポート。 バージョン番号を含む名前付けアセンブリのサポート追加。
  4. SSL および HTTPS のエミュレータ サポート:
    SSL および HTTPs エミュレーションをエミュレータでサポート。
  5. ネイティブ XML Parser:
    XML パーサー ネイティブ コードでパフォーマンスを向上。
  6. ネイティブのコレクション:
    コレクション クラスはネイティブ コードで実装され、Queue と Stackをサポート。
  7. 時刻の同期:
    新しい時刻同期 API により、システム時刻を指定したサーバーの時刻から自動または手動で同期。
  8. 任意の表示サイズ:
    760 KB を超えるビットマップをサポート、カスタムのヒープと割り当て領域を提供。
  9. 大きなバッファ:
    新しい型、Microsoft.SPOT.Hardware.LargeBufferをサポート。これにより、マネージド ヒープに収まるらない 760 KB を超えるバッファの割り当てが可能。
  10. ウォッチドッグと電力制御:
    電力レベルとウォッチドッグ動作の振る舞いの制御が、Microsoft.SPOT.Hardware.PowerState、Microsoft.SPOT.Hardware.Watchdog により可能。Microsoft.SPOT.Hardware.dll を使用して、マネージ アプリケーションから制御。
  11. 太いペンやグラデーション塗りつぶし:
    ウィジェットとコントロールをデザインするため、豊富なグラフィック モデルを提供。
  12. TinyCore パフォーマンスの向上:
    イベントのディスパッチとレイアウトで TinyCore のパフォーマンスを強化。

Visual Studio 2010 Beta 2

Visual Studio 2010 Beta 2 がダウンロードできるようになっていますが、その新機能は・・・

注意: 当然ながらリリース前なので、リリース時点でどうなるかはわかりません。

全体にで洗練されたデザインになった感じがします。トップページは、作業の開始、ガイダンスとリソース、最新ニュースがタブになり、見やすくなっています。

image

新しいプロジェクトでは、.NET Framework 4 が標準でサポートされるようになっています。また、F#がサポートされるようになりました。F#は、関数型言語で、ML(Meta Language)の1つ。Beta 2では、プロジェクトに F#ライブラリ、F# アプリケーション、F# チュートリアル、F# Sliverlight ライブラリが用意されています。

image

また、C#プロジェクトでは、ASP.NET MVC 2 Web Application プロジェクトテンプレートが用意されていてます。

image

また、Office プロジェクトテンプレートでは、Office 2010 対応のアドインテンプレートが追加されています。いよいよ Office 2010 ですね。

image

また、新しいプロジェクトテンプレートとして、Enable Windows Azure Tools が追加されており、Azure 対応が可能になるようです。

image

さらに、SharePoint 関連のプロジェクトテンプレートが追加されていて、C# でパーツなどを開発できるようになるようですね。

image

Silverlight も同列のプロジェクトテンプレートとして、Silverlight アプリケーション、ナビゲーションアプリケーション、クラスライブラリが用意されています。

image

インストール関連では、InstallShield Limited Edition のプロジェクトが追加されています。

image

今回、フローティングウィンドウが、Visual Studio のメイン画面の外に移動することができるようになり、マルチモニターの大画面で広々と使えるようになります。VS2008まではかなり狭かったので、思いっきり広く使えるようになります。

image

Visual Studio 2010 では、Silverlight のプロジェクトテンプレートが追加され、今までより楽に Silverlight アプリケーションが作れるようになります。コントロールは現時点で次のようなものがあります。

image

また、コードエディタで、コードを修正すると、左側に修正したところを黄色、緑色などで表示し、どこを編集したいのかわかりやすくなっています。

image 

ちょっとみただけで、かなり大幅な機能エンハンスが行われています。ただ、まだベータ2なので、かなり不安定なところがありますね。このため、Virtual PC上で復元ディスクをイネーブルにして試したほうがいいです。

インストール方法には、従来の DVD からインストールする方法に加えて、今回 Web Installer というものが追加されていて、Web Installer はわずか4.6MBです。この Web Installer を実行すると必要なものをネットからダウンロードしてきて、インストールを行ってくれます。

あと、 これまで Visual Studio Team System と呼ばれていた最上位バージョンは、Visual Studio 2010 Ultimate という名前になっています。

November 22

クローム OS

http://blog.chromium.org/2009/11/hello-open-source-developers-would-you.html

の中で、電源ONから、数秒でブラウザが起動するビデオがあった。

現時点では、Linux上で、ビルド&実行ができる。今は Ubuntu 8.04上で開発されている。

November 15

VHD Boot の方法

MURA さんがまとめたページ。

http://www.vwnet.jp/Windows/WS08R2/VHD-boot/VHDboot.htm

そのうちお世話になりそうなので、メモっておく。

Microsoft Online Services

ここ

https://mocp.microsoftonline.com/site/default.aspx

で、Live Meeting Standard 5 ライセンスが月額 2350円でオンラインで買える。でも、最低5ライセンスから。

image

そのほかに、こんなものが使える。

  • Microsoft Exchange Online
  • Microsoft SharePoint Online
  • Microsoft Office Communications Online
  •  

    Live Meeting は、会社で電話会議のときに使っているけど、サーバー運用費を考えたら、かなりお得。1ライセンスから売ってほしいなぁ~。

    Google の Go 言語

    最近?アナウンスされたようですね。

    http://golang.org/

    いまのところ、コンパイラーは、Linux, Mac OS X のみ。

    コンパイラーターゲットは、linux/amd64, linux/arm, linux/386, darwin/amd64, darwin/386, and nacl/386.

    実行サンプルはこんな感じ。

    $ cat >hello.go <<EOF
    package main

    import "fmt"

    func main() {
    fmt.Printf("hello, world\n")
    }
    EOF
    $ 6g hello.go
    $ 6l hello.6
    $ ./6.out
    hello, world
    $

    言語仕様は

    http://golang.org/doc/go_spec.html

    C++に似ている。強い型。並列プログラミング、Garbage Collection をサポートしている。ここまではOK。

    その一方で、&, * による address operators を持っていて、c, c++のような、

    &x

    &a[f(2)]

    *p

    *pf(x)

    という表記ができる。この時点でパス。その時代には戻りたくないなぁ~。

    November 14

    Windows 7 on Virtual PC

    Visual Studio 2010 Beta 2 を入れようと思って、Virtual PC 上に Windows 7 をインストールしてみた。仕様としては、正式にサポートされていなので、まともに動かなくてもしかたないのだけれど、問題2点あり。

    image

    インストールは問題なく終わったのだが、なぜかマウスのクリックが効かない。バーチャルマシーンの追加機能をインストールしても、解決せず。デバイスマネージャ上も特にエラーが出ていないので、原因不明。回避策として、リモートデスクトップで接続すれば、問題なく使える。

    もうひとつ問題があり、パフォーマンスが悪い。ホスト側でアンチウィルスソフトの例外として VHD, Virtual PC を除外しても、改善せず。バーチャルマシーンの追加機能をインストールすると、Vista だとそこそこのスピードで動くようになる。今回は、むりやり Windows 7 をインストールしたのだが、追加機能はWindows 7用ではないはずなので十分なチューニングがなされていないのではないか。ちょっとこのスピードだと、使用に耐えない。Virtual PC for Windows 7 対応してくれないかな。

    Xbox 360からTwitterとFacebookを利用可能に

    http://itpro.nikkeibp.co.jp/article/NEWS/20091113/340527/

    によると、 マイクロソフトは2009年11月13日、ゲーム機「Xbox 360」の会員制インターネットサービス「Xbox LIVE」で、同月17日から米大手SNS「Facebook」とミニブログ「Twitter」を利用可能にすると発表した。11月17日よりXbox LIVEのポータル上に「マイ コミュニティー」チャンネルを開設し、TwitterとFacebookのアプリケーションを配信する。ただし、「ゴールドメンバーシップ」に加入した18歳以上の層を対象。

    November 12

    USB接続のグラフィックアダプターの使用感

    24インチディスプレイを買ったので、17インチ2枚と、24インチ1枚の3枚構成が可能なはずだったのに、グラフィックボードがデュアルしかサポートしていないので、悲しい2枚構成でした。
    そこで、USB接続のグラフィックアダプターを購入してみました。
    http://www.iodata.jp/product/tv/ga/usb-rgb_d/index.htm

    OS
    はWindows 7ですが、USBにさすだけでドライバーを自動認識してくれて、ドライバーをインストールすることなく、接続できました。すばらしい。
    USBなのに、ビデオを流してみても、表示的にはカクカク感もなく、全く問題ない。

    と思って、ちょっと使っているとことですが、ウィンドウを移動した瞬間、文字がにじむような感じになります。つまり、画面の書き換えを行う瞬間、データ転送速度が追い付いていないような感じでちょっと気持ち悪いです。

    やっぱり、マルチモニターにするなら、ディスプレーカードがお勧めですね。

    November 11

    Windows 7 に Virtual Server 2005 R2 SP1 をインストールできない

    Windows 7 に Virtual Server をインストールしようとすると、

    image

    というプログラム互換性アシスタントダイアログが表示される。

    オンラインで解決策の有無を確認する ボタンを押しても、

    image

    というように、解決策が見つかりませんとなり、インストールできない。

    インストーラの setup.exe を右クリックして

    image

    互換性のトラブルシューティングを選択し、プログラムの互換性ダイアログより”推奨設定を使用する”を選択してみる。

    image

    すると、Windows 互換モード: Windows XP (Service Pack2) ディスプレイ:標準、UAC:標準

    image

    を選択し、プログラムの開始ボタンを押すと、ジャーン

    image

    だめ。

    しかたないので、Virtual PC 2007 SP1 をインストールして、とりあえずそれで動かそうと思ってインストールしてたところ、こちらはすんなりインストールできた。

    Virtual PC を実行してみると、必要なバーチャルマシン モニタドライバが見つかりません。とダイアログが表示されて動かない。

    image 

    あれ?っと思って、管理者モードでインストールしなおしたら、無事起動した。

    image

    さて、Virtual Server が使えないのは、困った。

    July 16

    プロセスモニタ

    どこかで見たことのあるようなものをWPFで作ってみた。

    image

    簡単に作れるだろうと思っていたのだけど、いくつか、ハマり中。

    1.プロセスの情報を取るいいI/Fが見つからない。System.Diagnostics.Process.GetProcesses() だと、プロセッサタイムが取得できないので、しかたなしにWMIでプロセスの情報を取っているのだけれど、結構重くって、CPUパワーが食われまくり。パフォーマンスカウンターを全プロセス分持つのも芸がないし、Win32 SDKを叩くか?? .NETで、いい方法ない?

    2.画面のリサイズもフォントサイズとPolygon の関係をちゃんと考えないといけないので、意外と難しい。

    3.おまけに6角形にレイアウトするのも面倒。誰か、HexaFlowコントロール作ってくれないかな w

    でも、こんな感じで http://uchukamen.com/pmon/publish.htm 意外と見ていて面白い。

    PS. LINQ は偉大だ。もう LINQ 無しでは生きていけない体になってしまった。

    July 15

    Generic Dictionary の foreach

    あまり使わないので忘れないようにメモ

    Dictionary<uint, Process> processDict = new Dictionary<uint, Process>(100);

    foreach (KeyValuePair<uint, Process> val in processDiff)
    {
       Process p = val.Value;
             …
    }

    July 13

    WPF ユーザーコントロール

    <UserControl x:Class="WpfApplication6.Cell"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            >
        <Grid >
        <Polygon Name="Polygon" Margin="5 5 5 5"
        Points="25,0 75, 0 100,43 75,86 25, 86 0 43"
        Stroke="Purple"
        StrokeThickness="2">
                <Polygon.Fill>
                    <SolidColorBrush Color="Red" Opacity="0.8"/>
                </Polygon.Fill>
            </Polygon>

            <Label Name="label1" HorizontalContentAlignment="Center" Margin="6,15,6,0">Label</Label>
            <Label Name="label2" HorizontalContentAlignment="Center" Margin="4,47,8,21" >Label</Label>
        </Grid>

    </UserControl>

    用途は・・・

    Process 情報の取得に関するメモ2

    WMI を使用して Process 情報を取得する際に LINQ を使用しようとすると

    ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_Process");
    ManagementObjectCollection queryCollection1 = query1.Get();

    var query = from proc in queryCollection1 select proc;
    foreach (var process in query)
    {
       …
    }

    エラー    1    ソース型 'System.Management.ManagementObjectCollection' のクエリ パターンの実装が見つかりませんでした。'Select' が見つかりません。範囲変数 'proc' の型を明示的に指定してください。    C:\Users\uchukamen\Documents\Visual Studio 2008\Projects\WpfApplication6\WpfApplication6\Window1.xaml.cs    140    38    WpfApplication6

    というエラーになる。

    回避方法は、範囲変数 proc の型を明示的に指定するために、queryCollection1.Cast<ManagementObject>()  としてあげるとうまくいった。うむむむむ・・・

    ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_Process");
    ManagementObjectCollection queryCollection1 = query1.Get();

    var query = from proc in queryCollection1.Cast<ManagementObject>() select proc;
    foreach (var process in query)
    {
        Console.WriteLine(process["ProcessId"] + ":");
        Console.WriteLine(process["Name"] + ":");
        Console.WriteLine(process["KernelModeTime"] + ":");
        Console.WriteLine(process["UserModeTime"] + ":");
    }

    ------

    もうちょっと見やすく?すると、IEnumerable<ManagementObject> にキャストしてくれるということ。

    ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_Process");
    ManagementObjectCollection queryCollection1 = query1.Get();
    IEnumerable<ManagementObject> procQuery = queryCollection1.Cast<ManagementObject>();

    var procs = from proc in procQuery select proc;

    foreach (var process in procs)
    {
        Console.WriteLine(process["ProcessId"] + ":");
        Console.WriteLine(process["Name"] + ":");
        Console.WriteLine(process["KernelModeTime"] + ":");
        Console.WriteLine(process["UserModeTime"] + ":");
    }

    Process 情報の取得に関するメモ

    Visual Studio 2008 , Vista で、GetProcesses() でプロセス情報を取得する際に、TotalProcessorTime などプロセッサタイムを取得しようとすると、Win32Exception により取得できない。なぜ??

    var query = from proc in System.Diagnostics.Process.GetProcesses()
                orderby proc.Id
                select new
                {
                    Id = proc.Id,
                    processName = proc.ProcessName,
                    TotalProcessorTime = proc.TotalProcessorTime
                };

    foreach (var process in query)
    {
        Console.WriteLine(process.Id + ":");
        Console.WriteLine(process.processName + ":");
        Console.WriteLine(process.TotalProcessorTime + ":");
    }

    -----------------

    WMI を使用すれば、取得可能。

    ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_Process");
    ManagementObjectCollection queryCollection1 = query1.Get();

    foreach (ManagementObject mo in queryCollection1)
    {
        Console.WriteLine(mo["ProcessId"] + "\t" + mo["Name"] + "\t" +
            ":\tKernelModeTime=" + mo["KernelModeTime"] +  // in 100 nanosecond units
            ":\tUserModeTime=" + mo["UserModeTime"]);   // in 100 nanosecond units
    }

    July 06

    Visual Studio 2010

    image

    でフローティングを使用すると、

    image

    独立ウィンドウで開けるのがいい感じ。

    Visual Studio 2010 Parallel - Process

    シーケンシャルだと

    var query = from proc in System.Diagnostics.Process.GetProcesses() select proc;
    foreach (var process in query)
    {
        Console.WriteLine(process.Id + " : " + process.ProcessName);
    }

    これがパラレルだと、

    var query = from proc in System.Diagnostics.Process.GetProcesses() select proc;
    Parallel.ForEach(query, process =>
        {
            Console.WriteLine(process.Id + " : " + process.ProcessName);
        }
    );

    処理的には、パラレルでもシーケンシャルでも関係ないので、パラレルで実行しているほうが処理する人の感覚(意図)に近いのかもしれない。

    Visual Studio 2010 Parallel

    Visual Studio 2010 beta を入れてみた。

    image

     

    using System.Threading;
    using System.Diagnostics;

    Stopwatch sw = new Stopwatch();
    sw.Start();
    Parallel.For(0, 10, x =>
        {
            Console.WriteLine(x.ToString() + " : " + Thread.CurrentThread.ManagedThreadId.ToString());
            Thread.Sleep(5000);
        }
    );
    sw.Stop();

    実行結果

    x : ManagedThreadId

    -------------

    0 : 8
    5 : 10
    1 : 11
    6 : 12
    2 : 13
    7 : 14
    3 : 15
    4 : 8
    8 : 10
    9 : 10

    こんなことができてしまうなんて・・・

    May 25

    Codeseek 勉強会のWinRing0の資料をアップしました。

    第40回codeseek勉強会
    「宇宙仮面のWinRing0」
    (共催:tk-engineeringこみゅぷらすeパウダ~.Net/C# Group)

    開催日:2009年5月19日(火) 19:00~21:00 18:55に6F受付集合
    場所:マイクロソフト社新宿オフィス6F会議室
    募集締め切り:2009年5月16(土)23時59分59秒
    20名まで
    参加費無料

    Codeseek 勉強会のWinRing0の資料を
    http://uchukamen.com/wpf/WinRing0/
    にアップしました。
    May 19

    削除できなくなった Gadget を強制的に削除する

    いろいろ悪さをしていて、Gadget が消せなくなった場合の対処方法 w

    1. タスクトレイの [Windows サイドバー]を右クリック→終了。
    2. %USERPROFILE%\AppData\Local\Microsoft\Windows SidebarのSettings.ini を削除
    3. スタートメニュー→アクセサリ→Windows サイドバー で再起動。

    なお、この場合、サイドバーの設定がすべてリセットされます。

    May 18

    XML Web Service の呼び出し

    CPUの温度を取得する際、WebClient を使用した、非同期呼び出し。

    なお、Silverlight 3 Beta では、linq がサポートされていないので動かない。

    ///////////

    WebClient client = new WebClient();

    string request = "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"  xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">  <soap:Body><CPUTemperatureStringResponse xmlns=\"http://tempuri.org/\">      <CPUTemperatureStringResult>float</CPUTemperatureStringResult>    </CPUTemperatureStringResponse></soap:Body></soap:Envelope>";

    client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");

    client.Headers.Add("SOAPAction", "http://tempuri.org/CPUTemperature");

    client.UploadStringCompleted += delegate(Object sender2, UploadStringCompletedEventArgs ev)
    {
        XNamespace soap="http://schemas.xmlsoap.org/soap/envelope/";
        XNamespace xsi="http://www.w3.org/2001/XMLSchema-instance";
        XNamespace xsd="http://www.w3.org/2001/XMLSchema";
        XNamespace xst = "http://tempuri.org/";

        XDocument xmlHeadlines = XDocument.Parse(ev.Result);
        var headlines = from story in xmlHeadlines.Descendants(xst + "CPUTemperatureResult") select story;

        string temp = headlines.First().Value;

        TextBox1.Text = temp;
    };

    client.UploadStringAsync(new Uri("http://localhost/SystemTemperature/Temperature.asmx"), request);

    May 06

    CPUの温度取得に関するメモ6

    WinRing0 を利用した Web Service のビルド環境の構築まとめ (Vista 32bit版)

    1. Visual Studio 2008 を管理者モードで起動
    2. ASP.NET Web サービスアプリケーションのプロジェクトを作成
    3. OpenLibSys.cs を追加
    4. WinRing0 は管理者で実行する必要があるため、Web.Config で Administrator に偽装するためのコードを追加
      <configuration>
        <system.web>
          <identity impersonate="true" userName="ホスト名\Administrator" password="パスワード" />
    5. デバッグ環境時の DLL 参照パス C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0 に WinRing0.sys と WinRing0.dll をコピーする。
    6. IIS実行環境時の DLL 参照パス c:\windows\system32\inetsrv に WinRing0.sys と WinRing0.dll をコピーする。

    CPUの温度取得に関するメモ5

    Web Service から OpenLibSys を呼び出すと、InitializeOls(); を呼ぶところでOLS_DLL_DRIVER_NOT_FOUND エラーになってしまう。

    この原因は、WinRing0.sys を Visual Studio のデバッグ環境で、Web Service から呼び出すときに、OlsDll.cpp の Initialize()関数の中で、ドライバーを呼び出すときのパスが、 “C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WinRing0.sys” になってしまうためであることが判明した。暫定で、その場所に WinRing0.sys をコピーして先に進んでみる。

    次に、Web Service をローカルの IIS に発行してみると、ドライバーを呼び出すときのパスが今度は、 “c:\windows\system32\inetsrv\WinRing0.sys” になってしまい、ドライバーを探しに行ってエラーになってしまう。そこに、WinRing0.sys をコピーすることで、Web Service から OpenLibSys を呼び出せるようになった。

    image 

    はまったメモ:

    WinRing0が LoadLibrary で呼ばれていて、Web Service からデバッグできないので、ビルド環境を作って、メッセージを埋め込んでデバッグするしかなかった。もう少しいい方法があるのかな・・・

    そこで、WinRin0\dll をビルドしてたら、DEF ファイルが外出しになっていて、リンカオプションに def ファイルを追加する必要があった。

    /DEF:"C:\Users\uchukamen\Desktop\WinRing0_1_3_0\source\dll\OlsApi.def"

    そこで、fprintf (stderr でと思ったが、出力先がないので、エラーを出せない。イベントログも面倒なので、とりあえず、ファイルにエラーメッセージを書き出した。

    やっぱりワナがあった w

    ここまでくれば、あとは OpenLibSys も気にせず、管理者モードに移行する必要もなく、簡単にアプリができる。ただ、OpenLibSys 強力な分、セキュリティ上注意が必要。

    ASP.NET で偽装する

    温度計を Web Service にしてなんてことを考えて、Administrator 権限が必要な OpenLibSys を Web Service 化するには、偽装しなければならない。その他、きっとはまるだろうと思いつつ、やっぱり引っかかりますね。

    Web.config で

    <configuration>
      <system.web>
        <identity impersonate="true" userName="ホスト名\Administrator" password="パスワード" />
       …

    と追加して、実行すると、

    '/' アプリケーションでサーバー エラーが発生しました。 構成にエラーがあります。

    説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下のエラーの詳細を確認し、構成ファイルに変更を加えてください。
    パーサー エラー メッセージ: 構成ファイルで指定された資格情報から Windows ユーザー トークンを作成できません。オペレーティング システム 'ログオン失敗: アカウントは現在無効に設定されています。
    ' のエラーです。

    というエラーが発生。Vista では、Administrator アカウントが無効になっているので、

    [管理ツール] → [ローカル セキュリティ ポリシー]

    image

    これを有効にしてみた。すると、このエラーは、無事解決。

    しかし、InitializeOls(); を呼ぶところで引っかかっている。サービス側なので、デバッグが厄介だな・・・

    この原因は、WinRing0.sys を Visual Studio のデバッグ環境で、Web Service から呼び出すときに、OlsDll.cpp の Initialize()関数の中で、ドライバーを呼び出すときにディレクトリが、 “C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WinRing0.sys” になってしまい、OLS_DLL_DRIVER_NOT_FOUND エラーになってしまう。暫定で、その場所に WinRing0.sys をコピーして先に進んでみる。

    次に、Web Service をローカルの IIS に発行してみると、こんどは “c:\windows\system32\inetsrv\WinRing0.sys” を探しに行ってエラーになる。そこに、WinRing0.sys をコピーすることで、Web Service から OpenLibSys を呼び出せるようになった。

    May 05

    あれ? Vista IIS 7 で Web Service が動かない・・・

    温度計をWeb Serviceにしてしまおうかと思って、久々にWeb Service を作って、ローカルの Vista に発行してみたら、

    「IIS 7.0 でホストされている Web サイトにアクセスすると、エラー メッセージ:"HTTP エラー 500.19-内部サーバー エラー"」 というエラーで Web Service が動かない。

    http://support.microsoft.com/kb/942055/ja

    に対処方法が書かれていたので、その通りにしてみたが症状は変わらず。

    あれれ? ということで、いろいろ調べていたら、[コントロール パネル] → [プログラムと機能] → [Windows の機能を有効化または無効化] → [アプリケーション開発機能] の ASP.NET のチェックがされていなかった。

    VISTA を入れて、Visual Studio 2008 を標準インストールしただけで特に何もしていないはずなので、標準インストールでは ASP.NETは ON にならないのかな?

    image

    このチェックを入れたら、無事動いた。

    Windows Vista IIS で ASP.NET を動かすための設定は、

    http://msdn.microsoft.com/ja-jp/library/aa964620.aspx

    に書かれています。
    エラーメッセージからサポートオンラインの情報を引いたのだけれど、その情報に惑わされてしまった。というわけで、またはまりそうなので、一応メモっておこう。
     
    このスペースにアクセスしていただき、ありがとうございます。
    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.
    こちらでははじめまして。tama_5こと玉上です。
    せっかく友人リストにお誘い頂いたのに、ご挨拶が遅れてしまい申し訳ありません。
     
    ところで、
    私の見ているブログが偏っているためかわかりませんが、ここまでWPFで本格的に
    3Dを扱っているところは初めて拝見しました!
    しかも、今話題の初音ミクを題材にしていて、3Dに全く明るくない私でもとてもとっつきやすいです。
    3D、特に人型のを扱うWPFについて勉強するときにぜひ参考にさせていただきますね。^^
    Apr. 1

    天気予報

    Loading...