Win32API質問箱 Build127

0001デフォルトの名無しさん2021/12/09(木) 21:32:56.60ID:sYLpmj89
Win32APIについての質問はこちらへどうぞ。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

■過去スレ
Win32API質問箱 Build126
https://mevius.5ch.net/test/read.cgi/tech/1588339011/
Win32API質問箱 Build125
https://mevius.5ch.net/test/read.cgi/tech/1551247748/
Win32API質問箱 Build124
https://mevius.5ch.net/test/read.cgi/tech/1510395780/

■関連スレ
Visual Studio 2020 Part1 https://mevius.5ch.net/test/read.cgi/tech/1634166667/
Visual Studio 2019 Part7 https://mevius.5ch.net/test/read.cgi/tech/1634178709/
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/

0754デフォルトの名無しさん2023/09/27(水) 23:12:54.83ID:zQBl5fyt
その為のレジストリなんじゃないのか?
キーは基本的に会社名含めてるから被らないし、ファイルを作成して消耗するより楽だろ

0755デフォルトの名無しさん2023/09/28(木) 06:29:56.08ID:wsjwbbNA
テンポラリの作業用にレジストリ使うの?
ファイル造る方が楽

0756デフォルトの名無しさん2023/09/28(木) 08:45:42.90ID:fRqICkyk
>>753とか>>754とか
世の中に同じ名前の会社が一切存在しないと思ってんだろうか

0757デフォルトの名無しさん2023/09/28(木) 09:48:55.62ID:wMng62Lu
知らんわ
あとから出来たほうが対策しろよw

0758デフォルトの名無しさん2023/09/28(木) 10:00:55.49ID:7+/lnWbq
ファイルやディレクトリ造るために社名変更するまである

0759デフォルトの名無しさん2023/09/28(木) 10:03:24.72ID:/0J5x9qx
実際被ってたことってある?
俺はないけど

0760デフォルトの名無しさん2023/09/28(木) 19:13:55.93ID:0dpaiugf
俺はいまでもかぶってる

0761デフォルトの名無しさん2023/09/28(木) 23:36:06.79ID:HoOgKtnG
もげろ

0762デフォルトの名無しさん2023/09/29(金) 08:59:20.90ID:Z2hlTA8C
病院行ってこい

0763デフォルトの名無しさん2023/09/29(金) 09:07:48.85ID:05Kz/f5R
整形外科?泌尿器科?

0764デフォルトの名無しさん2023/09/29(金) 11:10:40.92ID:F8aJXNq9

0765デフォルトの名無しさん2023/10/07(土) 15:05:12.07ID:9HknARLB
>>750
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。

0766デフォルトの名無しさん2023/10/07(土) 15:05:22.61ID:9HknARLB
>>750
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。

0767デフォルトの名無しさん2023/10/09(月) 03:22:17.67ID:vj98VpKw
>>764
グロ

0768デフォルトの名無しさん2023/10/09(月) 08:17:21.60ID:2tIVtmSa
リソースの作成は、片山さんのを使っているのですか?

0769デフォルトの名無しさん2023/11/27(月) 15:12:37.06ID:hjluQqqG
はい

0770デフォルトの名無しさん2023/12/05(火) 09:32:43.89ID:wrsiK2xx
MoveFileExにはMOVEFILE_WRITE_THROUGHというフラグがあって、
直後にディスクへフラッシュすることができるけど、
これと同じことをCopyFileで行うことはできますか?

0771デフォルトの名無しさん2023/12/05(火) 12:40:51.43ID:3zuw4Zf7
>>770
単独では無理そうなので、CopyFile2 をつかうといい。
https://devblogs.microsoft.com/oldnewthing/20221007-00/?p=107261

0772デフォルトの名無しさん2023/12/05(火) 13:17:40.41ID:wrsiK2xx
>>771
Microsoft公式で、こんな苦し紛れな方法が紹介されているんですね。
MoveFileExはNT3.1以降の関数なのに。

0773デフォルトの名無しさん2023/12/05(火) 15:56:54.94ID:qi66pVAj
>>770,771
どっちもそれだけでは不意の電源断でロバストじゃないのが難しい。

0774デフォルトの名無しさん2023/12/05(火) 21:13:57.13ID:rxI6O073
タイムスタンプが1970年だかのファイルを仮置きして別名でコピーしたら挿げ替え
電源断が怖いなら挿げ替え部分だけアトミックに作ればいい

0775デフォルトの名無しさん2023/12/05(火) 22:40:24.43ID:82k65TSZ
>>774
>電源断が怖いなら挿げ替え部分だけアトミックに作ればいい

この部分は具体的にセオリー的なやり方があるのですか?
挿げ替えで思い当たるReplaceFileはアトミックか分かりませんでした。

0776デフォルトの名無しさん2023/12/06(水) 11:02:51.03ID:swAla//2
CopyFileではいったんテンポラリファイルにコピーして、
それをMoveFileExで正しいファイル名に変更するとかやれば、
ちゃんと書き込まれる可能性は高くなるんですかね

0777デフォルトの名無しさん2023/12/06(水) 13:32:02.74ID:MnzvwPfi
アトミックなファイル操作
https://heartbeats.jp/hbblog/2013/10/atomic01.html

(ちょっと古いけど)

0778デフォルトの名無しさん2023/12/06(水) 18:36:06.88ID:NNCP5uXb
>>775
Rep略はアトミックだよ
MSのどっかに書いてあった

0779デフォルトの名無しさん2023/12/06(水) 18:43:37.11ID:NNCP5uXb

0780デフォルトの名無しさん2024/01/02(火) 18:23:35.28ID:fgzxSMPt
RtlReAllocateHeap(GetProcessHeap(), 0, lpMem, dwBytes)
これをそこそこの頻度でやってると特定回数目にクラッシュしてしまうんだけどどういうことなのだろうか
よくある戻り値null未チェックとかそういう事ではなく上記関数内で落ちるんだよね
lpMemも間違いなく生きてるメモリなのは確認済みでdwBytesも不自然な値ではない

呼び出し方が悪いのかと思ってmalloc、reallocに変えてみてもやはり同様の場所でクラッシュしてしまう

0781デフォルトの名無しさん2024/01/02(火) 21:23:43.76ID:rZ40Y3/a
API変えても発生するならAPI関係ない場所のお前のバグじゃん

0782デフォルトの名無しさん2024/01/02(火) 23:51:50.03ID:fgzxSMPt
>>781
WindowsのreallocはHeapReAllocのラッパーでHeapReAllocの実態はRtlReAllocateHeapへのリンクに過ぎない訳だが

0783デフォルトの名無しさん2024/01/03(水) 00:50:32.19ID:+N5csyKn
mallocやreallocもまともに使えない子はこのスレに来るのはまだ早かったねー

0784デフォルトの名無しさん2024/01/03(水) 01:02:21.99ID:l1Q27XPY
正月ボケを晒すスレ

0785デフォルトの名無しさん2024/01/03(水) 09:46:34.80ID:STDOZzf0
free 済のポインタに対して 再び free したんじゃないの?

0786デフォルトの名無しさん2024/01/03(水) 09:47:05.92ID:STDOZzf0
realloc の頭で free するからね

0787デフォルトの名無しさん2024/01/04(木) 19:03:00.23ID:IQKtoxOL
特定回数でクラッシュするなのがわかってるなら
アドレスがどう変化した時にクラッシュするとかわかりそうなもんだ

0788デフォルトの名無しさん2024/01/04(木) 22:30:57.77ID:ZPN5xQR2
mallocで大きなメモリを取得して、その領域から切り出すalloc関数などを作って差し替えてデバッグするとか?
組み込み系で良くやるけどね。

0789デフォルトの名無しさん2024/01/04(木) 22:40:26.44ID:L+x9xVwI
ボソ HeapAlloc()

0790デフォルトの名無しさん2024/01/04(木) 22:48:53.63ID:IQKtoxOL
>>786
それはおかしいだろ
(アドレスが変わる場合は)freeする前に新しいアドレスに内容コピーしないといかんから

0791デフォルトの名無しさん2024/01/14(日) 00:10:31.18ID:+DXd3tPu
BoundsChecker か PURIFY ですぐ究明できそうな気がするけど

0792デフォルトの名無しさん2024/01/16(火) 14:06:03.29ID:YFpb2YHn
メモリのフラグメンテーションで大きい領域がとれないんじゃない?

0793デフォルトの名無しさん2024/01/23(火) 16:49:29.22ID:SUJHX/By
ファイルパスなんかはカーネルが結局UNICODE_STRINGとして扱うからwchar版の方がパフォーマンス良いけどadvapi32のレジストリ系関数はどうなんだろうか?

0794デフォルトの名無しさん2024/01/26(金) 12:12:36.19ID:h4bsjzTE
WM_MOUSEFIRSTからWM_MOUSELASTのメッセージって、
これから追加されるメッセージもLPARAMはすべてマウス位置のクライアント座標が入る、という約束はありますか?

0795デフォルトの名無しさん2024/02/21(水) 15:57:22.07ID:jTOh+ue+
Spy++のメッセージウィンドウには、「S」や「P」の文字が表示されていて、
それがSendで送られたのかPostで送られたのかがわかるようになっていますが、
これと同じ区別を、自身のメッセージハンドラ上で行うことはできるのでしょうか

InSendMessageというAPIは見つけたのですが、
Spy++で「S」と表示されるものでも0が返ってきてしまいました

0796デフォルトの名無しさん2024/02/22(木) 22:51:02.73ID:kQumE7Ak
分別してどうするのさ

0797デフォルトの名無しさん2024/02/23(金) 16:31:44.91ID:JzCbi9fb
InSendMessageは別のスレッドからSendMessageされたかを判断する、と説明があるから、
単純にSendMessage呼び出しを判定するものではなさそう

同一スレッドからのSendMessageの呼び出し判定は、ウィンドウプロシジャのコールスタック辿って
SendMessageのエントリポイントと比較するとか、何か追加で頑張る必要がありそう

0798デフォルトの名無しさん2024/02/23(金) 17:02:46.18ID:GiKlOj9R
Snedはメッセージキューに来ないからあればPostなければSendやぞ

0799デフォルトの名無しさん2024/02/24(土) 00:12:34.16ID:qqiEO45x
内部でIsPostMsgとかフラグ作ってDispatchMessage()を呼ぶ時に1にする終わったらゼロにする

0800デフォルトの名無しさん2024/02/24(土) 09:12:26.23ID:niSNojaB
ウィンドウプロシジャが呼ばれる経路はそれだけ?

0801デフォルトの名無しさん2024/02/24(土) 13:03:44.44ID:qqiEO45x
Postでキューに入ったのを取り出して呼ばれるのはそこだけでしょう
Sendでは直接呼ばれる
もしウィンドウプロシージャの中からSendしてたらこれは使えない

0802デフォルトの名無しさん2024/02/24(土) 13:41:01.55ID:Uzz+lkGd
自アプリ側で予め
SendMessage PostMessage
をフックしとけば良いのでは?

0803デフォルトの名無しさん2024/02/24(土) 14:33:49.19ID:5nanMrzK
http://bonurd.winofsql.jp/sb/log/eid175.html
SendMessage と PostMessage のフック

0804デフォルトの名無しさん2024/02/25(日) 11:17:44.56ID:GDczOUha
>>796-803
ありがとうございます
Spy++はメッセージをフックしているから、SendとPostの区別もできるということなんですかね

新着レスの表示
レスを投稿する