[ カテゴリー » PC関連 ]

Visual Studio.NETサービスのデバッグ

今度はVB.NETでWindowsサービスプログラムを作ろうとしていたりします。サービスとなると通常プログラムよりも表示や入力が制限される(基本的にやらない)ので、Visual Studio.NETのデバッガが利用できるのはかなり助かります。

Visual Studio.NETではサービスの作り方も楽になっていて、プロジェクトの種類にWindow applicationやDLLと並んでWindows Serviceなんてのが用意されているので、これを選びます。特集:初めて作る.NET Windowsサービス(ITmedia)Link なんかを参考にして、自動的に生成されるSystem.ServiceProcess.ServiceBaseのサブクラスのメソッドをコーディングするだけ。(まともに使えるサービスとなるといろいろ書く必要がありますが)

blog20070718VSdotNETServiceLogin

デバッグは通常プログラムとはちょっと異なります。blog.C#Link なんかを参考にしてますが、
  1. まずexeをビルド
  2. installutilコマンドでサービスとして登録
    • installutil.exeが通常パスの通ってないところにあります。スタートメニュー内のVisual Studioのツールフォルダにあるコマンドプロンプトを使うと、パスが通ってます
    • 管理者権限である必要があります。私の開発ユーザーIDはVS Developer+制限ユーザなので、上のコマンドプロンプトをAdministratorとして起動してます。
    • サービスの起動をUserに設定してた場合(Visual Studioプロジェクトのどこかで設定可能、忘れた;;)、ユーザーIDとパスワードを問われます。Windowsに登録してあるユーザーでいいのですが、ドメインを含めた[ドメイン]¥[ユーザー]で指定しないと登録に失敗します。ローカルマシンなら、.¥[ユーザー]で指定可能。
  3. コントロールパネルのサービスで、登録したサービスを起動
    • これも管理者権限でサービスマネージャを起動する必要があります。全体を通して管理者でやったほうがはるかに楽^^;
  4. exeをビルドしたプロジェクトを開き、ツールのプロセスにアタッチで起動したサービスを選択
    • これもVisual Studioを管理者権限で起動しておかないと、アタッチ後サービスへのアクセスが拒否されて、実質的にデバッグできません。結局管理者権限でやれということでしょうか? Visual StudioインストールするとVS Developerなんてユーザーグループ作るくらいだから、なんか別の方法がありそうですが・・・

これでデバッグ開始。ブレークポイントを設定しておけばそこで止まってくれます。デバッガーを止めるとサービスも止まってしまうので、またコントロールパネルで開始する必要があります。

— posted by mu at 08:38 pm   commentComment [0]  pingTrackBack [0]

デスクトップPCのケミコンが死んでた(3)

blog20070708ChemicalCondenserNew

これLink の続き。秋葉原の山王で日ケミの同容量ケミコンを購入。ここLink に書いてある親父のお勧めに注意というのが、なんとなく分かる。人間的にはいい親父に思うけど、理系人間を不安にさせるものがあるw 高々1000円ちょっとの買い物に1割引してくれるというのが、この商売の厳しさか元々ぼってるのか

交換後起動してみると、少なからずダメージが。オンボードの音源はスピーカーともども壊れてしまったようだし、メモリも1枚お亡くなり。それに気付かず電源入れたら異臭がして焦るΣ( ̄○ ̄) 見たら端子の一本焦げてた。

blog20070708PCThermalProfile

今回マザーを外すまでの大掛かりなメンテナンスとなったので、電源ファンを低速なものにし、CPUヒートシンクも埃を取ってシリコングリスを塗りなおし。電源ファンの風量が落ちたので温度上がるかと心配したのですが、逆にCPU温度が8度近くも下がってるΣ( ̄○ ̄) そりゃさ、埃も少々付いてたし、グリスも灰色に変色してたけど、いくらなんでも8度は下がりすぎ。いかに以前のグリスの塗り方がダメダメだったかを思い知らされる_| ̄|○

[2007/7/8 追記] DRAM一枚逝って512→256MBに。Windows 2000だから十分だと思ってたら、PSULink がHDDがんがん回って重い。急遽中古買ってきて512MBに戻す。

— posted by mu at 09:28 am   commentComment [0]  pingTrackBack [0]

デスクトップPCのケミコンが死んでた(2)

blog20070707ChemicalCondenserBroken

昨日Link の続き。破損しているケミコンがもう一個見つかり、計5個。今のマザーは無鉛半田が使用されていて融点が高く、ケミコンを引き抜くことはできても穴に埋まった半田が吸い取り線では取れやしない。千枚通しで埋まった半田を押し出す。

破損したケミコンを見ると全部GSCで、他の無事なのはTEAPO。コンデンサ会社の格付けLink とも合致するとても分かりやすい傾向w

友人と昼食を摂った後、秋葉原に買いに行く予定。ああ、後一日早く分かっていたらなぁ。

— posted by mu at 09:00 am   commentComment [0]  pingTrackBack [0]

デスクトップPCのケミコンが死んでた

blog20070706ChemicalCondenserBroken

パスポートの再申請Link の後、秋葉原へ。会社のPCのケミコンが破裂したので、交換品を購入のため。PC用のケミコンって瞬間的に大電流を流すことを要求されるので容量が大きい・内部抵抗が小さい・高速応答の上に、電圧は低くてもいいので小さいと特殊。低ESRと呼ばれる高性能のものが使われますが、会社にそんなものは無く。

ついでにこれLink の続き、CPU・GPUファンと並んで音のでかいと思われる電源ファンを低回転速にすべく、1600RPMの物を購入。あとFDDベイに内蔵するメモリカードリーダー(USBハブ付き)を。

で、帰宅して電源ファンを交換すべくPCを開けると・・・マザー上のケミコンが4つ死んでるΣ( ̄O ̄) この前ケースファン交換したときLink こんなの気付かなかったぞ。上部の腐食を見ると、昨日今日壊れたようには見えないしなぁ。ということは、この状態でも動くということ?

このマザーはSocketA/DDRメモリ/AGPバスなため、ここでマザーが逝ってしまうと主要部品全部買いなおしになってしまう・・・それは避けたい;;

てなわけで、明日また秋葉原に行くことになるのでした・・・

— posted by mu at 11:19 pm   commentComment [0]  pingTrackBack [0]

SATAのI/Oポート

blog20070705DeviceManager

blog20070705IntelSATAControllerProperty

仕事でI/Oポートを直接叩いてHDDを制御しようとしてます。NT系のWindowsでこんなことやろうとすると例外違反で落とされてしまいますので、PortTalkLink とか使うわけですが。

I/Oポートのアドレスは従来のパラレルATA(PATA)の場合、
  • Primary Master: 0x1F0
  • Primary Slave: 0x3F0
  • Secondary Master: 0x170
  • Secondary Slave: 0x370
固定でまず間違いないのですが、今回制御するHDDはシリアルATA(SATA)。SATAはソフトウェアからは極力PATAと同じに扱えるように仕様が決められているらしいのですが、I/Oポートはどれ?という疑問が。というのも、今回使うDELL Precision 370はDVDドライブ用にPATAも装備されており、上記のPrimary用I/OアドレスはPATAに割り当てられています。試しにSecondaryのI/Oアドレスを叩いてみましたが、ダメでした。

ネットで検索しても欲しい情報にはかすりもせず>_<、BIOS見てみたり、いくつかのHDDの内部情報を見るプログラムを使ってみたり。結論は灯台下暗し。デバイスマネージャに書いてありました^^;

なおSATAはMaster/Slaveの概念が無く、全部Masterドライブとして扱われるそうです。

PS この件で検索しているときに古いですがこんなのLink 見つけました。分かっている人間から見れば痛い話ですが、当人は真剣なんでしょうねぇ。

— posted by mu at 07:07 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0251 sec.
prev
2025.10
next
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31