Win32API質問箱 Build ..
[2ch|▼Menu]
776:デフォルトの名無しさん
07/07/12 18:22:26
IDEのバスをリセットする(RESET#端子をアサートする)方法を教えてください。

IDEのデバイスに対してDEVICE RESETコマンドを送ることはできたのですが、
いざデバイスがハングアップした状態では、コマンドも受けとってもらえないわけで。


777:デフォルトの名無しさん
07/07/12 20:48:02
Documents and Settings\ユーザー名\NTUSER.DATとかの
OS可動中に開けないファイルを読み込み専用で良いので
開く方法を教えてください。
破壊がないか定期的にチェックをしたいので。

778:デフォルトの名無しさん
07/07/12 20:54:30
ACPIが有効なPC上で、CPU温度を定期的に取得する方法を教えてください。
以下のvbsを実行すれば温度を取得できるのですが、
一定間隔で実行しても温度に変化がありません。
(OS起動時に一度だけ取得してる様に見える)
なんとか更新させるか、別の方法がないか探してます。


cputemp.vbs------------------------------
Set fs = CreateObject("Scripting.FileSystemObject")
Set outFile = fs.CreateTextFile("CPUtemp.txt", True)
Set wbemServices = GetObject("winmgmts:" & "\\localhost\root\wmi")
Set wbemObjectSet = wbemServices.InstancesOf("MSAcpi_ThermalZoneTemperature")
For each Item in wbemObjectSet
outFile.WriteLine "CPU Temperature: " & (Item.CurrentTemperature - 2732) / 10 & "°C"
Next
outFile.Close
cputemp.vbs------------------------------

779:デフォルトの名無しさん
07/07/12 21:15:07
みんなやたら高度だな

780:デフォルトの名無しさん
07/07/12 21:43:08
PatchGuardてIATへの書き込みもガードするんですか?

カーネル領域でないのにガードされるんですか?(´;ω;`)

教えてエロい人(´・ω・`)

781:デフォルトの名無しさん
07/07/12 21:43:20
>>777
2003 Server以降なら、シャドー・コピーという手がある。

XPの場合はAPIとして表には出ていないがntbackupが使っている。
ダサい方法だが、ntbackupを子プロセスとしてキックして、
目的のファイルにバックアップ取って、
すぐさまntbackupで別の場所にリストアするという手がある。

ちなみに、
CreateFileでFILE_FLAG_BACKUP_SEMANTICSつけてダメだった?

782:デフォルトの名無しさん
07/07/12 22:19:02
>>781
色々ありがとうございます。
SE_BACKUP_NAME、SE_RESTORE_NAMEの特権を取得した後、

{ HANDLE h;
h = CreateFile("C:\\Documents and Settings\\user\\NTUSER.DAT"
,GENERIC_READ
,FILE_SHARE_READ
,0
,OPEN_EXISTING
,FILE_FLAG_BACKUP_SEMANTICS // FILE_ATTRIBUTE_NORMAL|
,0
);
if (h != INVALID_HANDLE_VALUE) {
printf("pass\n");
CloseHandle(h);
} else {
printf("ng\n");
}
}
の様にしましたがダメでした。
ntbackupの方法も検討してみます。

783:デフォルトの名無しさん
07/07/12 22:33:25
ちなみにGetLastErrorのコードは
CreateFile 20h:プロセスはファイルにアクセスできません。別のプロセスが使用
中です。
でした。

784:デフォルトの名無しさん
07/07/12 22:35:30
FILE_SHARE_WRITEとFILE_SHARE_DELETEも付けたほうがいいよ。


785:デフォルトの名無しさん
07/07/12 22:37:19
FILE_SHARE_WIFEとFILE_SHARE_DAUGHTERもつけたほうがいいよ

786:784
07/07/12 22:40:26
MSDNライブラリのCreateFileのFILE_SHARE何とかのところには、
"Subsequent open operations"と書かれているけど、
それは自分が一番最初にCreateFileする時の話で誤解がある。

実際には、同時にオープンする他者全員に対しての許可なので、
FILE_SHARE_WRITEを付けない = 許可しない場合には、
すでにWRITE有りでオープンしている人がいると、エラーになる。

787:デフォルトの名無しさん
07/07/12 22:45:51
>>781
ntbackupでバックアップ/別フォルダへのリストアに成功しました。
コマンドラインオプションから指示を出せる様なので、
この方法でできそうです。
ありがとうございました。

788:デフォルトの名無しさん
07/07/12 22:50:39
>>784
,FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ
としましたが同じエラーでした。


789:デフォルトの名無しさん
07/07/12 23:16:10
>>777
そんなこと聞く人が破壊がないかチェックなんてできるの?


790:デフォルトの名無しさん
07/07/12 23:20:40
楽勝だよ

791:778
07/07/12 23:26:06
>>778お願いします。
できないと死にそうです。


792:デフォルトの名無しさん
07/07/12 23:28:24
出来ないと死にそうなくらい、ヤバい温度になるのか?

793:デフォルトの名無しさん
07/07/12 23:37:07
>>789
たぶんレジストリの内容をまとめて盗むスパイウェアでも作ってるんだろう。

>>791
自分だったらACPIではなく、SMBus(I2C)で温度センサーの値を読むが。

794:デフォルトの名無しさん
07/07/12 23:46:24
>>792
部屋が灼熱地獄なんです
熱中症になる前にお願いします

795:デフォルトの名無しさん
07/07/12 23:47:57
>>761
標準の new は、小さなサイズの要求を大量に行うと、
メモリを無駄に使用してしまう。

数年前でも2GBのメモリ空間はかなり窮屈で
無駄にされるとかなり痛いので、
自前のアロケータを書いたことがある。


796:デフォルトの名無しさん
07/07/12 23:51:50
>>793
何故ですか?
センサー毎にハードコーティング要るんじゃかったですか?
そんな馬鹿馬鹿しい事やってられません

797:793
07/07/12 23:56:49
>>796
SpeedFanやEverestなどのメジャーなツールが取っている手段だから。
できるかどうかわからない方法を調べるよりは、
できることがわかっている方法を調べるほうがいいでしょ。

798:デフォルトの名無しさん
07/07/12 23:57:58
>>793
>SMBus(I2C)で温度センサーの値を読むが。
どのようにするのですか?
なんか、デバドラ作らないと出来ないような気がしますが、
簡単にAPIで値読めるのですか?

799:デフォルトの名無しさん
07/07/13 00:00:56
>>795
数年前なら、64ビットが選択肢に入ってたろうに。

自分ならまず設計を見直すよ。
大量にnewするオブジェクトたちが、本当に個別に寿命管理が必要なのか、と。


800:デフォルトの名無しさん
07/07/13 00:11:43
Boost.Pool最強説

801:795
07/07/13 00:20:51
>>799
漏れは、マシンもOSも調達されてから投入されたので、
64bit化しようとは、流石にいえない。
そもそも、実装されるメモリの量も余裕は無かったし。

個別の寿命管理は確実に必要だったと今振り返っても思うよ。

802:デフォルトの名無しさん
07/07/13 00:28:50
つーか温度計る手段がいまだに規格化されてないってのがアホだよな
WMIで得られる筈が>>778みたいな半端な物で形骸化してるみたいだし
今ではデスクトップPCでさえサスペンド/レジュームする時代なんだぜ

803:デフォルトの名無しさん
07/07/13 01:06:26
URLリンク(homepage.mac.com)

804:デフォルトの名無しさん
07/07/13 01:07:30
URLリンク(forum.windowspower.de)
URLリンク(freshmeat.net)
URLリンク(www.footslog.com)

805:デフォルトの名無しさん
07/07/13 02:33:43
>>803
(゚д゚)ハァ?

806:デフォルトの名無しさん
07/07/13 03:01:36
>>787
もしVistaで動かす予定があるならntbackupは廃止されたから
まじめにボリュームシャドウコピーを使う方法も併用する必要がある

807:デフォルトの名無しさん
07/07/13 07:17:28
>>802
計測ってより計測法でも利権が絡むからね。

808:デフォルトの名無しさん
07/07/13 08:05:05
>>801
それは、
何かよほどのこと
って奴だったんだよ、たぶん。

ラージアドレス(/3GB)を使ってもアドレス空間が足りないが、
かといってPAEなんて使いたくないという場合には、
いっそのことプロセスを分けてしまうという手もある。
プロセスを跨ぐオーバーヘッドが巨大だけどね。

809:デフォルトの名無しさん
07/07/13 08:09:20
>>806
強引な荒技もあるよ。

デフラグのAPIを使ってファイルのディスク上の所在を調べて、そこを直に読んでしまうという手もある。
もちろん、そんな行儀の悪いことは、よほどの理由がないとダメだが。

810:デフォルトの名無しさん
07/07/13 17:13:50
CreateProcessでCREATE_SUSPENDEDを利用してNotepad.exeを起動して、
とまってるときのMessageBoxAとMessageBoxWのアドレスと、

その後、ResumeThreadした後のMessageBoxAとMessageBoxWのアドレスが違うような気がするんですけど、
これって気のせいですか?

811:デフォルトの名無しさん
07/07/13 17:17:33
DefineDosDevice()で、特定のフォルダを新規ドライブとしてマウントできるけど、
そのとき、元のフォルダのほうをACLなりEFSなりで自プロセス以外から見えなくすることは可能?




812:デフォルトの名無しさん
07/07/13 17:53:48
>>810
CREATE_SUSPENDEDで作成されたプロセスは初期化が完了している保証は無い

813:デフォルトの名無しさん
07/07/13 18:37:58
むしろ初期化終わってないのが普通じゃない?
この段階だとGetModuleFileNameExのようなAPIが失敗するもんで、
どうやってこの初期化だけを完了させるのか知りたかったりする
(forでResume/sleep/Suspendを細切れにしてまわしてた)

814:デフォルトの名無しさん
07/07/13 18:45:57
PEヘッダ解析して、PE.EntryPointのアドレスを書き換えるか、
ブレークポイントをしかけておくってのはどうだい?

815:デフォルトの名無しさん
07/07/13 19:50:28
CREATE_SUSPENDEDで止まっているときに色々やるのはオススメしない。

Windowsのサービスパックで挙動が変るのならまだしも、
WindowsUpdateで配られるモジュールのアップデートで挙動が変ってしまうから。

安全なのはプロセスのエントリポイントを乗っとること。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4333日前に更新/179 KB
担当:undef