- PR -

RTC(Real Time Clock)の取得方法

1
投稿者投稿内容
ZOJIRUSHI
会議室デビュー日: 2008/04/24
投稿数: 4
投稿日時: 2008-04-24 09:40
C#にてマザーボードのRTC(Real Time Clock)情報を取得する方法って
どなたかご存知ありませんか?
APIを使う方法でも構いませんので、情報よろしくお願いします。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2008-04-24 16:04
こんにちは。

引用:

ZOJIRUSHIさんの書き込み (2008-04-24 09:40) より:
C#にてマザーボードのRTC(Real Time Clock)情報を取得する方法って
どなたかご存知ありませんか?
APIを使う方法でも構いませんので、情報よろしくお願いします。



システム時刻じゃダメなんですよね?
なんでRTCの時刻を取得したいのか興味あります。

もしかしてWindowsCEなのかなと思ってみたり…
WindowsCE機ならOEMGetRealTimeあたりで取得できるかもしれませんね。

Windows9x/NT系のx86(IA)なら
カーネルモードで(C言語/アセンブラで)
IOポート(たぶん0070-007f)を読むか(たぶんBCDで書き込まれていると思われる)か
BIOSコールするか?(PC/ATのかなり昔の書籍にくわしく載っていたような気がするけど…)
どのみちこの方法は直接C#を使うのは無理ですね。

APIで…Windows DDKを使えばできるかも知れませんが、分かりません。
時間があればちょっと調査してみたいです。
ZOJIRUSHI
会議室デビュー日: 2008/04/24
投稿数: 4
投稿日時: 2008-04-25 09:27
Tdnr_Symさん、返信ありがとうございます。

そうですよね、BIOSコールで書き換えするのもをCなりでDLL化して
それをコールするのがスマートに思えます。
こちらの方向で考えます。
ありがとうございました。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2008-04-25 09:44
引用:

ZOJIRUSHIさんの書き込み (2008-04-24 09:40) より:
C#にてマザーボードのRTC(Real Time Clock)情報を取得する方法って
どなたかご存知ありませんか?
APIを使う方法でも構いませんので、情報よろしくお願いします。


RTCに直接アクセスするAPIは無いはずです。

もしIOするなら自前でドライバを作成することになりますが、OS自身がRTCにアクセスするタイミングと競合すると時刻を破壊する恐れがあります。この部分の排他制御が必要となるため、あまり現実的ではありません。

どのような用途を考えているのか分かりませんが、OSの提供する時刻で精度上の問題があるなら、正確な時刻を提供するための別のハードウェアを用意するのが一般的です。
1

スキルアップ/キャリアアップ(JOB@IT)