Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build125
https://mevius.5ch.net/test/read.cgi/tech/1551247748/
Win32API質問箱 Build124
https://mevius.5ch.net/test/read.cgi/tech/1510395780/
■関連スレ
Visual Studio 2019 Part4 https://mevius.5ch.net/test/read.cgi/tech/1585715794/
Visual Studio 2017 Part7 https://mevius.5ch.net/test/read.cgi/tech/1558179898/
【C++】 DirectX初心者質問スレ Part41 【C】 https://mevius.5ch.net/test/read.cgi/tech/1521786252/
探検
Win32API質問箱 Build126
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2020/05/01(金) 22:16:51.96ID:ZJ42fMZB938デフォルトの名無しさん
2021/10/25(月) 23:42:53.98ID:2h62u+// 面倒なので試さないけど、もしかしてフォント変更後にコンボボックスコントロールの
ウィンドウハンドルそのままSetWindowPosに投げたらドロップダウンサイズ変わらんか?
ウィンドウハンドルそのままSetWindowPosに投げたらドロップダウンサイズ変わらんか?
939デフォルトの名無しさん
2021/10/26(火) 19:58:48.51ID:2BgEM434 a.exe という service 用の exe があるとして
その WinMain の中で
登録済みの service (a.exe) として実行されたときと
デスクトップから起動 (a.exe) されたときと
区別する方法はありますか?
その WinMain の中で
登録済みの service (a.exe) として実行されたときと
デスクトップから起動 (a.exe) されたときと
区別する方法はありますか?
941デフォルトの名無しさん
2021/10/26(火) 21:49:16.90ID:55s5H13U デスクトップって言うのはダブルクリックで起動って読み替えたけど違うんかな
942デフォルトの名無しさん
2021/10/26(火) 21:52:04.16ID:cAwQ+zjg ・実行ファイル自体は同じ場所にある
・(ダブルクリックによる)エクスプローラーからの起動
・システムのサービスに登録してての起動
実行ファイル側のコードで自分自身で区別することが出来るか? という話でいいのかな?
・(ダブルクリックによる)エクスプローラーからの起動
・システムのサービスに登録してての起動
実行ファイル側のコードで自分自身で区別することが出来るか? という話でいいのかな?
943蟻人間 ◆T6xkBnTXz7B0
2021/10/26(火) 21:57:13.21ID:Dp6wzto0 ショートカットファイルならコマンドラインオプションをつけることができるから、それで区別可能。
944デフォルトの名無しさん
2021/10/26(火) 22:10:48.14ID:DnJtJtaA サービス用のEXEをそのまま実行する仕組みなんて普通は作らないけど
そのプロセスを起動した親のPPIDで判別できると思うよ
そのプロセスを起動した親のPPIDで判別できると思うよ
945デフォルトの名無しさん
2021/10/26(火) 22:13:30.49ID:WqHq7Z2L 親プロセスがservices.exeかどうか見るとか。結構めんどくさそうだけど
946デフォルトの名無しさん
2021/10/26(火) 22:22:56.91ID:DnJtJtaA .NETにはPPID取得する方法が用意されてないのが驚きなんだよね
WMIかピンボケするしかない
WMIかピンボケするしかない
947デフォルトの名無しさん
2021/10/26(火) 22:50:49.81ID:WzQpbfaj 独自のコマンドラインオプションをつけたものをサービスとして登録して、
それがついているときはサービスとして動作するように作ってる
それがついているときはサービスとして動作するように作ってる
948デフォルトの名無しさん
2021/10/27(水) 07:31:35.16ID:Zj1idbQo949デフォルトの名無しさん
2021/10/27(水) 09:54:33.98ID:t2iD5tO8950デフォルトの名無しさん
2021/10/27(水) 11:38:38.74ID:jUeTV2mv >>948
アプリケーションのエントリポイントは WinMain (or main) で変わらんでしょ
その中で登録だなんだを経てWinMain からは抜けるけどプロセスは生き残ったまま
別スレッドで ServiceMain をディスパッチしてるだけじゃなかろうか
アプリケーションのエントリポイントは WinMain (or main) で変わらんでしょ
その中で登録だなんだを経てWinMain からは抜けるけどプロセスは生き残ったまま
別スレッドで ServiceMain をディスパッチしてるだけじゃなかろうか
951デフォルトの名無しさん
2021/10/27(水) 17:24:24.16ID:Zj1idbQo952デフォルトの名無しさん
2021/10/27(水) 21:34:16.61ID:rXHlGl3r win7以前かな
953デフォルトの名無しさん
2021/10/27(水) 22:39:54.26ID:FvdEROp3 サービスのAPIってWindows NTの時代からたいして変わってないだろw
954デフォルトの名無しさん
2021/10/27(水) 23:35:14.09ID:joAdtZnc NT4 から2000でSCMの動的ロードが出来るようになったな
955デフォルトの名無しさん
2021/10/27(水) 23:50:16.32ID:ou7Wlnm/ >>951
WinMain(またはmain)内でStartServiceCtrlDispatcherを呼ぶ以外の方法あるの?
WinMain(またはmain)内でStartServiceCtrlDispatcherを呼ぶ以外の方法あるの?
956デフォルトの名無しさん
2021/10/28(木) 09:41:55.77ID:XVuwIiyB おまいの眼は節穴か
957デフォルトの名無しさん
2021/10/28(木) 21:15:42.35ID:WySuLNFg yes.It's the power of Christ that compels you!
958デフォルトの名無しさん
2021/11/02(火) 16:25:02.03ID:yLMj4W62 IOCTL_DISK_GET_DRIVE_LAYOUT_EXで得られるパーティションの情報と
FindFirstVolume, FindNextVolumeで得られるボリュームとの
対応付けはどうやるんです?
FindFirstVolume, FindNextVolumeで得られるボリュームとの
対応付けはどうやるんです?
959デフォルトの名無しさん
2021/11/03(水) 12:54:39.69ID:VhVmtrn9 >>958
何をやりたいのかわからないけど、IOCTL_DISK_GET_DRIVE_LAYOUT_EXの情報からドライブ名にしたいのなら、
"\\?\Volume" + PartitionId(GUID) にすれば、ボリューム名になるのでそれを変換すればいいはず
何をやりたいのかわからないけど、IOCTL_DISK_GET_DRIVE_LAYOUT_EXの情報からドライブ名にしたいのなら、
"\\?\Volume" + PartitionId(GUID) にすれば、ボリューム名になるのでそれを変換すればいいはず
960デフォルトの名無しさん
2021/11/03(水) 16:28:52.42ID:XJPYAEvm961デフォルトの名無しさん
2021/11/05(金) 13:35:11.77ID:aDspL8GE WS_EX_TOPMOSTなウインドウが時々、
通常ウインドウごときに前に出しゃばられるんだけど
防ぐか、出しゃばられたのを自動検知してZオーダーを
奪い返すにはどうすればいい?
通常ウインドウごときに前に出しゃばられるんだけど
防ぐか、出しゃばられたのを自動検知してZオーダーを
奪い返すにはどうすればいい?
962デフォルトの名無しさん
2021/11/05(金) 13:42:11.04ID:AxgqQTGR 他所の窓が WS_EX_TOPMOST で奪っていって前に出しゃばられてるのであれば
WM_STYLECHANGED 捕まえて奪い返す?
WM_STYLECHANGED 捕まえて奪い返す?
963デフォルトの名無しさん
2021/11/05(金) 14:22:05.51ID:x8tAGQOE964デフォルトの名無しさん
2021/11/06(土) 14:43:09.91ID:b1XdA94q ランサムウェアでも造ってんのか
965デフォルトの名無しさん
2021/11/06(土) 15:06:28.83ID:Iy8k0Kf7 yes!
966961
2021/11/06(土) 21:24:14.45ID:7Goy9i30 CreateWindow直後は理屈のとおりなんだけど
長時間稼働させて忘れた頃にAdobe Readerだの一太郎だのに
前に出しゃばられてるんだ
長時間稼働させて忘れた頃にAdobe Readerだの一太郎だのに
前に出しゃばられてるんだ
967デフォルトの名無しさん
2021/11/06(土) 21:29:06.09ID:n6Z+kNBR >>963はどうなんだよって
968デフォルトの名無しさん
2021/11/06(土) 22:27:59.28ID:Iy8k0Kf7 >>961
WM _ windowposchanging
WM _ windowposchanging
969デフォルトの名無しさん
2021/11/07(日) 15:26:34.47ID:eUZdhF5f >>966
忖度だ
忖度だ
970デフォルトの名無しさん
2021/11/08(月) 18:39:57.62ID:GDZdggMg 継ぎスレよろ
971sage
2021/11/11(木) 21:36:46.70ID:sXUxuuhm 質問します
自作ソフトからのドラッグアンドドロップで
デカいファイルのコピーなどで DoDragDrop から長時間制御がかえって来ないことを嫌って
DoDragDrop に渡すデータオブジェクトに IDataObjectAsyncCapability を実装しています
これで、D&Dが非同期になり、データのコピーなどが始まると、StartOperation が呼ばれ、
終わると、EndOperation が呼ばれると思っていたのですが・・・
で、何がしたいかといいますと、自作ソフトからエクスプローラにファイルなどをD&Dをしたとき、
エクスプローラが自作ソフトのプロセス中の IDataObject を
使用している間は自作アプリの終了を出来ないようにしたいわけです(なぜならエクスプローラが使用中だから)
それで、StartOperation でカウンタを一つ上げて、EndOperation でカウンタを一つ下げれば
現在なんらかの IDataObject が使用中かどうかわかるので、その間は終了できないようにしたいわけです
ところが、実際には、StartOperation は呼ばれますが EndOperation は呼ばれません!(なぜ?)
Win10 と Win11 の両方で試しましたが、両方ともそうでしたのでそういう実装なのでしょう
そこで、IDataObject のデストラクタ をもってして EndOperation の代わりにしようと考えました
IDataObject の参照カウンタが0になって解放されたなら、だれも使ってないことは確実なので、、、
で、エクスプローラは IDataObject を使い終わったら素直に Release してくれるのでいいですが
そうでないソフトもあります、具体的には Visual Studio 2022 がそうでした
勝手な想像ですが、おそらく IDataObject の解放が GC 任せになっているのでしょうか、いつ解放してくれるか分かりません
問題は、Visual Studio 2022 に直接ドロップしなくても
D&D 中に少しでもマウスカーソルが Visual Studio 2022 のウィンドウの上を通過するだけで
Visual Studio が IDataObject を握ったままになることです
探せば Visual Studio 以外にも、特に .Net 系のアプリなんかで IDataObject の解放を
GC任せにしているアプリはあるんじゃないですかね
そういった経緯がありまして、どのタイミングでファイルのコピーなどが終了して
アプリを終了してもい状態になったかどうか、判断する手立てがなくて困ってます
何かいい方法ないですかね
自作ソフトからのドラッグアンドドロップで
デカいファイルのコピーなどで DoDragDrop から長時間制御がかえって来ないことを嫌って
DoDragDrop に渡すデータオブジェクトに IDataObjectAsyncCapability を実装しています
これで、D&Dが非同期になり、データのコピーなどが始まると、StartOperation が呼ばれ、
終わると、EndOperation が呼ばれると思っていたのですが・・・
で、何がしたいかといいますと、自作ソフトからエクスプローラにファイルなどをD&Dをしたとき、
エクスプローラが自作ソフトのプロセス中の IDataObject を
使用している間は自作アプリの終了を出来ないようにしたいわけです(なぜならエクスプローラが使用中だから)
それで、StartOperation でカウンタを一つ上げて、EndOperation でカウンタを一つ下げれば
現在なんらかの IDataObject が使用中かどうかわかるので、その間は終了できないようにしたいわけです
ところが、実際には、StartOperation は呼ばれますが EndOperation は呼ばれません!(なぜ?)
Win10 と Win11 の両方で試しましたが、両方ともそうでしたのでそういう実装なのでしょう
そこで、IDataObject のデストラクタ をもってして EndOperation の代わりにしようと考えました
IDataObject の参照カウンタが0になって解放されたなら、だれも使ってないことは確実なので、、、
で、エクスプローラは IDataObject を使い終わったら素直に Release してくれるのでいいですが
そうでないソフトもあります、具体的には Visual Studio 2022 がそうでした
勝手な想像ですが、おそらく IDataObject の解放が GC 任せになっているのでしょうか、いつ解放してくれるか分かりません
問題は、Visual Studio 2022 に直接ドロップしなくても
D&D 中に少しでもマウスカーソルが Visual Studio 2022 のウィンドウの上を通過するだけで
Visual Studio が IDataObject を握ったままになることです
探せば Visual Studio 以外にも、特に .Net 系のアプリなんかで IDataObject の解放を
GC任せにしているアプリはあるんじゃないですかね
そういった経緯がありまして、どのタイミングでファイルのコピーなどが終了して
アプリを終了してもい状態になったかどうか、判断する手立てがなくて困ってます
何かいい方法ないですかね
972デフォルトの名無しさん
2021/11/12(金) 00:10:15.19ID:4fWazNbK 迷惑な香具師だな
973デフォルトの名無しさん
2021/11/12(金) 00:15:39.07ID:sPOmWbjM 961もそうだが只の釣りだろ
974デフォルトの名無しさん
2021/11/12(金) 02:05:20.32ID:M7lyd7nj Ruby なら、まずデスクトップに、Rubyスクリプト・a.rb を起動するショートカットを作る
ショートカットのリンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb
a.rbの内容は、以下のように、
DryRun を使っているので、実際にはコピーされない
普通は、以下のように同期処理で作るけど、非同期にしたいのなら、
別プロセス・worker process でも起動すれば?
require 'fileutils'
dest_dir = "C:/Users/Owner/Documents/tmp/"
# ARGV は、ドロップした複数のファイルパスの配列
ARGV.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.each do |full_path|
file_name = File.basename( full_path ) # ファイル名のみ
FileUtils::DryRun.move( full_path, dest_dir + file_name)
end
sleep # 出力したコマンドプロンプト画面を閉じないようにする
出力
mv C:\Users\Owner\Documents\x.txt C:/Users/Owner/Documents/tmp/x.txt
ショートカットのリンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb
a.rbの内容は、以下のように、
DryRun を使っているので、実際にはコピーされない
普通は、以下のように同期処理で作るけど、非同期にしたいのなら、
別プロセス・worker process でも起動すれば?
require 'fileutils'
dest_dir = "C:/Users/Owner/Documents/tmp/"
# ARGV は、ドロップした複数のファイルパスの配列
ARGV.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.each do |full_path|
file_name = File.basename( full_path ) # ファイル名のみ
FileUtils::DryRun.move( full_path, dest_dir + file_name)
end
sleep # 出力したコマンドプロンプト画面を閉じないようにする
出力
mv C:\Users\Owner\Documents\x.txt C:/Users/Owner/Documents/tmp/x.txt
975デフォルトの名無しさん
2021/11/12(金) 02:18:11.02ID:+s5Ye2oF 読んでないぞガイジ
976デフォルトの名無しさん
2021/11/12(金) 02:47:31.80ID:0Z8rlyMb 上のキチガイも書いてるがそういう場合は別プロセスにして放置だな
単一プロセスでうまくいかない事なんて沢山ある
単一プロセスでうまくいかない事なんて沢山ある
977971
2021/11/12(金) 14:34:55.49ID:+qQdSUS6 そうですね、確かにただのファイルのコピーなら別プロセスで実行してもいいのですが
ドラッグアンドドロップと絡んでくると難しいんじゃないですかね
なにせ実際にファイルのコピーを行うのは自アプリじゃなくて
エクスプローラ側のなのでですね
別プロセスで DoDragDrop を呼び出せってことなんでしょうけど
ドラッグアンドドロップの起点となるのはメインアプリのマウスメッセージからなので
これはかなり難しいと思います
なにせ DoDragDrop は別スレッドから呼び出しただけで動かなくなる変なAPIなので
http://bbs.wankuma.com/index.cgi?mode=al2&namber=94173&KLOG=163
別プロセスとなるとさらにハードルが高いと思われます
なぜ別スレッドで DoDragDrop が呼び出せないかは謎なんですが
多分 Windows 内部で WM_LBUTTONDOWN 系の何か「今」マウスが押されてる
ウィンドウかスレッドを覚えていて、それとは別スレッドで DoDragDrop が実行されると
失敗する処理が入っているんだと思います
ドラッグアンドドロップはかなり、なんというか、まぁ、特別というか
他のアプリにも影響が出る処理なので、OS全体を巻き込んでフリーズしないように
何かしてあるんでしょうね、これ、ちょっとよく分かりませんが、、、
ともかく別スレッドで実行できないです、なんででしょうね
それを回避するのが IDataObjectAsyncCapability なんですが
https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nn-shldisp-idataobjectasynccapability
MSDN にも StartOperation が呼ばれたら、データ維持しろ、みたいなことが書いてあるけど
それをいつまで維持すればよいのかという話で、最後に EndOperation が呼ばれるって書いてあるけど
実際には呼ばれないんですよねー、まぁ呼ばれることもあるんですけど、この辺がまた一貫してない
ドラッグアンドドロップと絡んでくると難しいんじゃないですかね
なにせ実際にファイルのコピーを行うのは自アプリじゃなくて
エクスプローラ側のなのでですね
別プロセスで DoDragDrop を呼び出せってことなんでしょうけど
ドラッグアンドドロップの起点となるのはメインアプリのマウスメッセージからなので
これはかなり難しいと思います
なにせ DoDragDrop は別スレッドから呼び出しただけで動かなくなる変なAPIなので
http://bbs.wankuma.com/index.cgi?mode=al2&namber=94173&KLOG=163
別プロセスとなるとさらにハードルが高いと思われます
なぜ別スレッドで DoDragDrop が呼び出せないかは謎なんですが
多分 Windows 内部で WM_LBUTTONDOWN 系の何か「今」マウスが押されてる
ウィンドウかスレッドを覚えていて、それとは別スレッドで DoDragDrop が実行されると
失敗する処理が入っているんだと思います
ドラッグアンドドロップはかなり、なんというか、まぁ、特別というか
他のアプリにも影響が出る処理なので、OS全体を巻き込んでフリーズしないように
何かしてあるんでしょうね、これ、ちょっとよく分かりませんが、、、
ともかく別スレッドで実行できないです、なんででしょうね
それを回避するのが IDataObjectAsyncCapability なんですが
https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nn-shldisp-idataobjectasynccapability
MSDN にも StartOperation が呼ばれたら、データ維持しろ、みたいなことが書いてあるけど
それをいつまで維持すればよいのかという話で、最後に EndOperation が呼ばれるって書いてあるけど
実際には呼ばれないんですよねー、まぁ呼ばれることもあるんですけど、この辺がまた一貫してない
978デフォルトの名無しさん
2021/11/12(金) 15:45:20.47ID:rNKaN3pL おい片山、これの対応と次スレ建てやっとけ
979デフォルトの名無しさん
2021/12/02(木) 12:18:05.69ID:Q5DdwN4N DialogBoxでメインウインドウを作るとタイトルバーのHeightが若干短くなるものと認識していたのですが、色々とスタイルを試しても一般的なウインドウと同じものしか出来上がりません
世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?
世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?
980デフォルトの名無しさん
2021/12/02(木) 12:31:16.49ID:aNBqwDTQ 自分で描いてるんじゃね?
spy++で属性見るべし
spy++で属性見るべし
981デフォルトの名無しさん
2021/12/02(木) 12:36:49.79ID:vBr1OiF/ 比較画像とかある?
982デフォルトの名無しさん
2021/12/02(木) 12:43:31.97ID:zC7DodB0 >>979
> DialogBoxでメインウインドウを作るとタイトルバーのHeightが若干短くなるものと認識していたのですが、
そのようなことはありません
> 色々とスタイルを試しても一般的なウインドウと同じものしか出来上がりません
それが通常です
> 世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?
思い違いです
WS_EX_TOOLWINDOW を付与したウィンドウを求めてるだけじゃないのですか?
> DialogBoxでメインウインドウを作るとタイトルバーのHeightが若干短くなるものと認識していたのですが、
そのようなことはありません
> 色々とスタイルを試しても一般的なウインドウと同じものしか出来上がりません
それが通常です
> 世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?
思い違いです
WS_EX_TOOLWINDOW を付与したウィンドウを求めてるだけじゃないのですか?
983デフォルトの名無しさん
2021/12/02(木) 13:03:17.36ID:Q5DdwN4N >>980->>982
返答ありがとうございます
spy++で全く同じスタイルを付与してもタイトルバーの長さは変わらず太いままでした
短い方のフリーソフトにはWS_EX_TOOLWINDOWは立ってないようです
そして色々とググってみた所stackoverflowの質問によると、manifestにて最小サポートOSをWindowsXPにすると短くなるみたいな仕組みっぽいです
https://stackoverflow.com/questions/32426055/windows-10-dialog-box-titlebar-behavior
返答ありがとうございます
spy++で全く同じスタイルを付与してもタイトルバーの長さは変わらず太いままでした
短い方のフリーソフトにはWS_EX_TOOLWINDOWは立ってないようです
そして色々とググってみた所stackoverflowの質問によると、manifestにて最小サポートOSをWindowsXPにすると短くなるみたいな仕組みっぽいです
https://stackoverflow.com/questions/32426055/windows-10-dialog-box-titlebar-behavior
984デフォルトの名無しさん
2021/12/02(木) 19:14:11.18ID:8y/JBuUj この値ってファイル重複は調べられないのね
ハードリンク、シンボリックリンクだと同一の値だったが
(unsigned __int64) nFileIndexLow + ( (unsigned __int64) nFileIndexHigh<<32)
ハードリンク、シンボリックリンクだと同一の値だったが
(unsigned __int64) nFileIndexLow + ( (unsigned __int64) nFileIndexHigh<<32)
985デフォルトの名無しさん
2021/12/02(木) 21:02:13.06ID:8y/JBuUj 上のファイルIDって、ボリュームごとにナンバーがつけ変わるんですか?
そもそもどのようにファイルIDが生成されてるのか不明なんですが
コピーだと別のIDになりましたが
ボリューム番号を付けないでファイルIDが一致した場合、全く別のファイルってことがあるんですか?
ファイルの同一性判定
Windows
ボリュームシリアル番号とファイルIDを用いて同一性判定を行う。
https://yohhoy.hatenadiary.jp/entry/20130311/p1
そもそもどのようにファイルIDが生成されてるのか不明なんですが
コピーだと別のIDになりましたが
ボリューム番号を付けないでファイルIDが一致した場合、全く別のファイルってことがあるんですか?
ファイルの同一性判定
Windows
ボリュームシリアル番号とファイルIDを用いて同一性判定を行う。
https://yohhoy.hatenadiary.jp/entry/20130311/p1
986デフォルトの名無しさん
2021/12/02(木) 21:07:25.22ID:NUCi8UEu うめ
987デフォルトの名無しさん
2021/12/02(木) 21:09:25.23ID:8y/JBuUj ファイルIDが変更されるルールが不明なんですが
その昔の nFileIndexHigh/Low の日本語説明はこうなっている。
この識別子とボリューム シリアル番号により、 ファイルが一意に識別されます。
この番号は、 システムの再起動時やファイルのオープン時に変更される場合がありますが、
プロセスがファイルをオープンした後は、 識別子はファイルがクローズするまで一定の値になります。
アプリケーションはこの識別子とボリューム シリアル番号を使って、 2つのハンドルが同じファイルを参照しているかどうかを判断することができます。
成る程、比較にはボリューム シリアル番号も含めねばならぬ。
当時の「ファイルオープン時に変更されるかも」の文言の真意は判らないが、nFileIndexHigh/Low を長期間保存しておくのは問題有るかも知れない。
usskim.blog37.fc2.com/blog-entry-555.html
その昔の nFileIndexHigh/Low の日本語説明はこうなっている。
この識別子とボリューム シリアル番号により、 ファイルが一意に識別されます。
この番号は、 システムの再起動時やファイルのオープン時に変更される場合がありますが、
プロセスがファイルをオープンした後は、 識別子はファイルがクローズするまで一定の値になります。
アプリケーションはこの識別子とボリューム シリアル番号を使って、 2つのハンドルが同じファイルを参照しているかどうかを判断することができます。
成る程、比較にはボリューム シリアル番号も含めねばならぬ。
当時の「ファイルオープン時に変更されるかも」の文言の真意は判らないが、nFileIndexHigh/Low を長期間保存しておくのは問題有るかも知れない。
usskim.blog37.fc2.com/blog-entry-555.html
988デフォルトの名無しさん
2021/12/02(木) 21:39:46.13ID:z73dHP14989デフォルトの名無しさん
2021/12/02(木) 23:17:05.29ID:8y/JBuUj サンクス
でもよくわからないです
でもよくわからないです
990デフォルトの名無しさん
2021/12/03(金) 19:56:31.26ID:SutKwY48 NTFSの内部情報がないとどうにもならん
終了
終了
991デフォルトの名無しさん
2021/12/07(火) 10:03:39.54ID:m4TDhLeb dbgviewの後継ツールってないの?
特定のプロセスだけ監視するとか
大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
特定のプロセスだけ監視するとか
大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
992デフォルトの名無しさん
2021/12/07(火) 13:11:46.58ID:VYmmPtZe >>991
dbgviewのFilter機能じゃダメなの?
>特定のプロセスだけ監視とか
>大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
自分が作ってるアプリなら、Traceの頭に固有文字列付けとけばよいし、
そうで無いなら[プロセス番号]でフィルターすれば事足りると思うが?
dbgviewのFilter機能じゃダメなの?
>特定のプロセスだけ監視とか
>大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
自分が作ってるアプリなら、Traceの頭に固有文字列付けとけばよいし、
そうで無いなら[プロセス番号]でフィルターすれば事足りると思うが?
993デフォルトの名無しさん
2021/12/07(火) 13:35:15.66ID:KkhoCDsy >>987
FATならディレクトリの最初のクラスタと、ファイルのバイトオフセットから生成
デフラグによってそのクラスタ位置やバイトオフセットが変われば識別子も変わる
削除して別のファイルを生成した場合に、同じファイルIDが生成される可能性がある
NTFSなら削除されるかReplaceFileによって置き換えられるまでは一意
またFAT、NTFSともにファイルIDはファイルシステムごとだから、同一コンピュータ上でも論理ドライブが違えば被ることもあるので、
同じ論理ドライブか異なる論理ドライブかを判断するもの(ボリューム シリアル番号など)が必要
FATならディレクトリの最初のクラスタと、ファイルのバイトオフセットから生成
デフラグによってそのクラスタ位置やバイトオフセットが変われば識別子も変わる
削除して別のファイルを生成した場合に、同じファイルIDが生成される可能性がある
NTFSなら削除されるかReplaceFileによって置き換えられるまでは一意
またFAT、NTFSともにファイルIDはファイルシステムごとだから、同一コンピュータ上でも論理ドライブが違えば被ることもあるので、
同じ論理ドライブか異なる論理ドライブかを判断するもの(ボリューム シリアル番号など)が必要
994デフォルトの名無しさん
2021/12/07(火) 21:50:48.67ID:kG93TMWa デフラグやファイル操作で変わるなら何の意味もないように見える
活用したい場面なんてないのでは
活用したい場面なんてないのでは
995デフォルトの名無しさん
2021/12/09(木) 20:57:10.24ID:aTCz13pR うめる
996デフォルトの名無しさん
2021/12/09(木) 20:57:15.04ID:aTCz13pR 落とせ
997デフォルトの名無しさん
2021/12/09(木) 20:57:20.79ID:aTCz13pR 捕手
998デフォルトの名無しさん
2021/12/09(木) 20:57:34.68ID:aTCz13pR 外野手
999デフォルトの名無しさん
2021/12/09(木) 20:57:48.44ID:aTCz13pR これでこのpartスレは終わりだ
1000デフォルトの名無しさん
2021/12/09(木) 20:58:48.50ID:rdeWvBW2 1000ならこのpartスレはこのスレで終了
未来永劫立てるなボケガイジ低学歴低年収底辺ども
しねしね
未来永劫立てるなボケガイジ低学歴低年収底辺ども
しねしね
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 586日 22時間 41分 57秒
新しいスレッドを立ててください。
life time: 586日 22時間 41分 57秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国大使館、ついにXで尖閣諸島が領土と主張「何を言おうと釣魚島が中国に属する」に反発続々 [パンナ・コッタ★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」★2 [ぐれ★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★11 [BFU★]
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 ★2 [蚤の市★]
- 【野球】「地上波で放送しないWBC」は2軍選手中心で十分! 今こそネットフリックスに『ノー』を突き付けてほしい 江本氏が提言 [冬月記者★]
- 国民・榛葉氏「中国焦ってる」 ★2 [ぐれ★]
- ラーメン1杯500円… デフレ蔓延る日本、インフレさせて活力を取り戻す [667744927]
- 【悲報】ゼレンスキー「降伏するしかないかも・・・」ウク信「ゼレンスキーはプーアノン!最後の一兵まで戦え!」 [616817505]
- 【実況】博衣こよりのえちえちゼルダの伝説 ムジュラの仮面🧪
- 【悲報】日本メディア「80年前は軍部の言いなりになって誠にごめんなさい。今度は高市早苗の言いなりになります😔」 [616817505]
- 女子サッカー見てるやつの目的
- 【んな専🏡】三連休もんなってんなってんなりまくるのらよ🍬(・o・🍬)🏰
