Win32API質問箱 Build127
- 1 :デフォルトの名無しさん:2021/12/09(木) 21:32:56.60 ID:sYLpmj89.net
- 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/
- 755 :デフォルトの名無しさん:2023/09/28(木) 06:29:56.08 ID:wsjwbbNA.net
- テンポラリの作業用にレジストリ使うの?
ファイル造る方が楽
- 756 :デフォルトの名無しさん:2023/09/28(木) 08:45:42.90 ID:fRqICkyk.net
- >>753とか>>754とか
世の中に同じ名前の会社が一切存在しないと思ってんだろうか
- 757 :デフォルトの名無しさん:2023/09/28(木) 09:48:55.62 ID:wMng62Lu.net
- 知らんわ
あとから出来たほうが対策しろよw
- 758 :デフォルトの名無しさん:2023/09/28(木) 10:00:55.49 ID:7+/lnWbq.net
- ファイルやディレクトリ造るために社名変更するまである
- 759 :デフォルトの名無しさん:2023/09/28(木) 10:03:24.72 ID:/0J5x9qx.net
- 実際被ってたことってある?
俺はないけど
- 760 :デフォルトの名無しさん:2023/09/28(木) 19:13:55.93 ID:0dpaiugf.net
- 俺はいまでもかぶってる
- 761 :デフォルトの名無しさん:2023/09/28(木) 23:36:06.79 ID:HoOgKtnG.net
- もげろ
- 762 :デフォルトの名無しさん:2023/09/29(金) 08:59:20.90 ID:Z2hlTA8C.net
- 病院行ってこい
- 763 :デフォルトの名無しさん:2023/09/29(金) 09:07:48.85 ID:05Kz/f5R.net
- 整形外科?泌尿器科?
- 764 :デフォルトの名無しさん:2023/09/29(金) 11:10:40.92 ID:F8aJXNq9.net
- 風呂入れよ
https://www.youtube.com/watch?v=DTDMHUuC3rI
- 765 :デフォルトの名無しさん:2023/10/07(土) 15:05:12.07 ID:9HknARLB.net
- >>750
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。
- 766 :デフォルトの名無しさん:2023/10/07(土) 15:05:22.61 ID:9HknARLB.net
- >>750
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。
- 767 :デフォルトの名無しさん:2023/10/09(月) 03:22:17.67 ID:vj98VpKw.net
- >>764
グロ
- 768 :デフォルトの名無しさん:2023/10/09(月) 08:17:21.60 ID:2tIVtmSa.net
- リソースの作成は、片山さんのを使っているのですか?
- 769 :デフォルトの名無しさん:2023/11/27(月) 15:12:37.06 ID:hjluQqqG.net
- はい
- 770 :デフォルトの名無しさん:2023/12/05(火) 09:32:43.89 ID:wrsiK2xx.net
- MoveFileExにはMOVEFILE_WRITE_THROUGHというフラグがあって、
直後にディスクへフラッシュすることができるけど、
これと同じことをCopyFileで行うことはできますか?
- 771 :デフォルトの名無しさん:2023/12/05(火) 12:40:51.43 ID:3zuw4Zf7.net
- >>770
単独では無理そうなので、CopyFile2 をつかうといい。
https://devblogs.microsoft.com/oldnewthing/20221007-00/?p=107261
- 772 :デフォルトの名無しさん:2023/12/05(火) 13:17:40.41 ID:wrsiK2xx.net
- >>771
Microsoft公式で、こんな苦し紛れな方法が紹介されているんですね。
MoveFileExはNT3.1以降の関数なのに。
- 773 :デフォルトの名無しさん:2023/12/05(火) 15:56:54.94 ID:qi66pVAj.net
- >>770,771
どっちもそれだけでは不意の電源断でロバストじゃないのが難しい。
- 774 :デフォルトの名無しさん:2023/12/05(火) 21:13:57.13 ID:rxI6O073.net
- タイムスタンプが1970年だかのファイルを仮置きして別名でコピーしたら挿げ替え
電源断が怖いなら挿げ替え部分だけアトミックに作ればいい
- 775 :デフォルトの名無しさん:2023/12/05(火) 22:40:24.43 ID:82k65TSZ.net
- >>774
>電源断が怖いなら挿げ替え部分だけアトミックに作ればいい
この部分は具体的にセオリー的なやり方があるのですか?
挿げ替えで思い当たるReplaceFileはアトミックか分かりませんでした。
- 776 :デフォルトの名無しさん:2023/12/06(水) 11:02:51.03 ID:swAla//2.net
- CopyFileではいったんテンポラリファイルにコピーして、
それをMoveFileExで正しいファイル名に変更するとかやれば、
ちゃんと書き込まれる可能性は高くなるんですかね
- 777 :デフォルトの名無しさん:2023/12/06(水) 13:32:02.74 ID:MnzvwPfi.net
- アトミックなファイル操作
https://heartbeats.jp/hbblog/2013/10/atomic01.html
(ちょっと古いけど)
- 778 :デフォルトの名無しさん:2023/12/06(水) 18:36:06.88 ID:NNCP5uXb.net
- >>775
Rep略はアトミックだよ
MSのどっかに書いてあった
- 779 :デフォルトの名無しさん:2023/12/06(水) 18:43:37.11 ID:NNCP5uXb.net
- https://learn.microsoft.com/ja-jp/windows/win32/fileio/deprecation-of-txf
- 780 :デフォルトの名無しさん:2024/01/02(火) 18:23:35.28 ID:fgzxSMPt.net
- RtlReAllocateHeap(GetProcessHeap(), 0, lpMem, dwBytes)
これをそこそこの頻度でやってると特定回数目にクラッシュしてしまうんだけどどういうことなのだろうか
よくある戻り値null未チェックとかそういう事ではなく上記関数内で落ちるんだよね
lpMemも間違いなく生きてるメモリなのは確認済みでdwBytesも不自然な値ではない
呼び出し方が悪いのかと思ってmalloc、reallocに変えてみてもやはり同様の場所でクラッシュしてしまう
- 781 :デフォルトの名無しさん:2024/01/02(火) 21:23:43.76 ID:rZ40Y3/a.net
- API変えても発生するならAPI関係ない場所のお前のバグじゃん
- 782 :デフォルトの名無しさん:2024/01/02(火) 23:51:50.03 ID:fgzxSMPt.net
- >>781
WindowsのreallocはHeapReAllocのラッパーでHeapReAllocの実態はRtlReAllocateHeapへのリンクに過ぎない訳だが
- 783 :デフォルトの名無しさん:2024/01/03(水) 00:50:32.19 ID:+N5csyKn.net
- mallocやreallocもまともに使えない子はこのスレに来るのはまだ早かったねー
- 784 :デフォルトの名無しさん:2024/01/03(水) 01:02:21.99 ID:l1Q27XPY.net
- 正月ボケを晒すスレ
- 785 :デフォルトの名無しさん:2024/01/03(水) 09:46:34.80 ID:STDOZzf0.net
- free 済のポインタに対して 再び free したんじゃないの?
- 786 :デフォルトの名無しさん:2024/01/03(水) 09:47:05.92 ID:STDOZzf0.net
- realloc の頭で free するからね
- 787 :デフォルトの名無しさん:2024/01/04(木) 19:03:00.23 ID:IQKtoxOL.net
- 特定回数でクラッシュするなのがわかってるなら
アドレスがどう変化した時にクラッシュするとかわかりそうなもんだ
- 788 :デフォルトの名無しさん:2024/01/04(木) 22:30:57.77 ID:ZPN5xQR2.net
- mallocで大きなメモリを取得して、その領域から切り出すalloc関数などを作って差し替えてデバッグするとか?
組み込み系で良くやるけどね。
- 789 :デフォルトの名無しさん:2024/01/04(木) 22:40:26.44 ID:L+x9xVwI.net
- ボソ HeapAlloc()
- 790 :デフォルトの名無しさん:2024/01/04(木) 22:48:53.63 ID:IQKtoxOL.net
- >>786
それはおかしいだろ
(アドレスが変わる場合は)freeする前に新しいアドレスに内容コピーしないといかんから
- 791 :デフォルトの名無しさん:2024/01/14(日) 00:10:31.18 ID:+DXd3tPu.net
- BoundsChecker か PURIFY ですぐ究明できそうな気がするけど
- 792 :デフォルトの名無しさん:2024/01/16(火) 14:06:03.29 ID:YFpb2YHn.net
- メモリのフラグメンテーションで大きい領域がとれないんじゃない?
- 793 :デフォルトの名無しさん:2024/01/23(火) 16:49:29.22 ID:SUJHX/By.net
- ファイルパスなんかはカーネルが結局UNICODE_STRINGとして扱うからwchar版の方がパフォーマンス良いけどadvapi32のレジストリ系関数はどうなんだろうか?
- 794 :デフォルトの名無しさん:2024/01/26(金) 12:12:36.19 ID:h4bsjzTE.net
- WM_MOUSEFIRSTからWM_MOUSELASTのメッセージって、
これから追加されるメッセージもLPARAMはすべてマウス位置のクライアント座標が入る、という約束はありますか?
- 795 :デフォルトの名無しさん:2024/02/21(水) 15:57:22.07 ID:jTOh+ue+.net
- Spy++のメッセージウィンドウには、「S」や「P」の文字が表示されていて、
それがSendで送られたのかPostで送られたのかがわかるようになっていますが、
これと同じ区別を、自身のメッセージハンドラ上で行うことはできるのでしょうか
InSendMessageというAPIは見つけたのですが、
Spy++で「S」と表示されるものでも0が返ってきてしまいました
- 796 :デフォルトの名無しさん:2024/02/22(木) 22:51:02.73 ID:kQumE7Ak.net
- 分別してどうするのさ
- 797 :デフォルトの名無しさん:2024/02/23(金) 16:31:44.91 ID:JzCbi9fb.net
- InSendMessageは別のスレッドからSendMessageされたかを判断する、と説明があるから、
単純にSendMessage呼び出しを判定するものではなさそう
同一スレッドからのSendMessageの呼び出し判定は、ウィンドウプロシジャのコールスタック辿って
SendMessageのエントリポイントと比較するとか、何か追加で頑張る必要がありそう
- 798 :デフォルトの名無しさん:2024/02/23(金) 17:02:46.18 ID:GiKlOj9R.net
- Snedはメッセージキューに来ないからあればPostなければSendやぞ
- 799 :デフォルトの名無しさん:2024/02/24(土) 00:12:34.16 ID:qqiEO45x.net
- 内部でIsPostMsgとかフラグ作ってDispatchMessage()を呼ぶ時に1にする終わったらゼロにする
- 800 :デフォルトの名無しさん:2024/02/24(土) 09:12:26.23 ID:niSNojaB.net
- ウィンドウプロシジャが呼ばれる経路はそれだけ?
- 801 :デフォルトの名無しさん:2024/02/24(土) 13:03:44.44 ID:qqiEO45x.net
- Postでキューに入ったのを取り出して呼ばれるのはそこだけでしょう
Sendでは直接呼ばれる
もしウィンドウプロシージャの中からSendしてたらこれは使えない
- 802 :デフォルトの名無しさん:2024/02/24(土) 13:41:01.55 ID:Uzz+lkGd.net
- 自アプリ側で予め
SendMessage PostMessage
をフックしとけば良いのでは?
- 803 :デフォルトの名無しさん:2024/02/24(土) 14:33:49.19 ID:5nanMrzK.net
- http://bonurd.winofsql.jp/sb/log/eid175.html
SendMessage と PostMessage のフック
- 804 :デフォルトの名無しさん:2024/02/25(日) 11:17:44.56 ID:GDczOUha.net
- >>796-803
ありがとうございます
Spy++はメッセージをフックしているから、SendとPostの区別もできるということなんですかね
220 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★