5 月 31

バッファローのUSB高速化技術「TurboUSB」の実力
~外付けHDDで40MB/sec超

CrystalDiskMark はプログラム的には CrystalMark/CPUID と比較してずっと単純ですが、丁寧に作りこんだつもりなので色々なところで使っていただけるのは大変うれしいです。

5 月 31

開発状況

  • EXE 1% 
  • DLL 50%
  • SYS 90%
  • VXD 0%

デバイスドライバがうまくロードできず悩みに悩んで試行錯誤したのですが、結論!!

ドライバをロードする前に、今までのサービスの残骸を削除しておきましょう。

ということみたいです。

えっ?今まではどうしていたのかって?グッドグエスションです。SysInfo.dll は initialize() 関数を何度も呼び出して成功するのを待っていたわけです。(2回やれば大抵通るような気がする)

SysInfo.dll は今更修正できない?ので、OpenLibSys の進展にご期待ください。

そろそろデモプログラムをリリースしたいところ・・・。

5 月 30

開発状況

  • EXE 1% 
  • DLL 10%
  • SYS 90%
  • VXD 0%

とりあえず、テスト用実行ファイルを作ってみたもののデバイスドライバが一発でロードできず撃沈。できないわけはないんでまた明日がんばります。。。

5 月 28

今日は NT 用デバイスドライバと DLL の開発を進めました。SysInfo や DDK のサンプルコードを参照しながら作業を進めています。

 開発状況

  • EXE 0% 
  • DLL 5%
  • SYS 90%
  • VXD 0%

NT 用ドライバについても一応完成したつもりではありますが、一度も試していないので・・・。DLL の開発はもうちょっと時間がかかりそうです。

5 月 28

備忘録を兼ねてメモメモ。

5 月 28

今日は、こんなページを見つけました。
Windows Internals II - Kernel-mode extensions 補足資料

なんだか、ずいぶんわかりやすい資料だなぁ~と思いドメインをチェックしてみると天下の u-tokyo.ac.jp ではありませんか!!
しかも、以下の一文が輝いてます。

この節では,まず,環境設定やDDK の基本的な使い方について述べる.次に,Windows 上でプログラムをしたことがない人もいるかもしれないということで,Windows プログラムの基礎的な事項について説明する.

初めての Windows プログラムが DDK って・・・。

それより何より、メインの資料が英語なんですけど???ひょっとしてなくても英語で授業ですか。そうですか・・・。しかも、英語でディスカッションの時間もあるんですね・・・。

5 月 27
  • Pure x64 Edition で Multiplier Management の設定ができない不具合を修正
5 月 27

OpenLibSys の開発は順調にすすんでいるのでここで目標を宣言と・・・。

 OpenLibSys Core SDK

  • リリース時期:2007年度内

OpenLibSys SDK

  • リリース時期:2007年度内
5 月 27

今日は 「READ_PORT_UCHAR」をキーワードに google で検索してのですが、以下の素敵なページを発見しました。

  • WDMとNT形式デバイスドライバ (なひたふJTAG日記)
    WDM形式とNT形式があることは知っていたのですが、インストール方法が違うのは知りませんでした。メモメモ。。。
    こんな記事を書く人はどんな人だろうと思いプロフィールをチェックすると・・・IPAのスーパークリエータ。
  • 坂井瑞穂のPC話
    SMBus やら SPD やらなんというか極上情報満載!!どうしてこんな素敵なサイトに今まで気がつかなかったのか・・・

で、気がついたのですが。 RDMSR とか WRMSR とかではなく、(マニアックな)API 名や READ_PORT_UCHAR のようなマクロ名で調べると良いのかも。

5 月 26

色々書き直したら SysInfo のこーどよりずっとすっきりしました。

__readmsr() が使えるのは便利ですねぇ。 


NTSTATUS
ReadMSR( ULONG IoctlCode,
	void *lpInBuffer,
	ULONG nInBufferSize,
	void *lpOutBuffer,
	ULONG nOutBufferSize,
	ULONG* lpBytesReturned)
{
#ifndef _NT4
	try{
#endif
	ULONGLONG data = __readmsr(*(ULONG*)lpInBuffer);
	memcpy((PULONG)lpOutBuffer, &data, 8);
	*lpBytesReturned = 8;
	return STATUS_SUCCESS;
#ifndef _NT4
	}
	except(EXCEPTION_EXECUTE_HANDLER)
	{
	*lpBytesReturned = 0;
	return STATUS_UNSUCCESSFUL;
	}
#endif
}