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
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/05/01(金) 22:16:51.96ID:ZJ42fMZB351デフォルトの名無しさん
2020/09/25(金) 18:57:00.47ID:3+LaQyVV >>350
御意
御意
>>349
どんなところがダメなんでしょうか?
どんなところがダメなんでしょうか?
353デフォルトの名無しさん
2020/09/25(金) 21:58:40.78ID:62tG58VZ WINDK使ってサブシステム毎作り直せば良いのに
354蟻人間 ◆T6xkBnTXz7B0
2020/09/25(金) 22:05:15.01ID:ogXn8IQh コンパイルできるXPのソースが漏れてるらしい。
355デフォルトの名無しさん
2020/09/27(日) 00:13:50.58ID:Tq9/SM8I356デフォルトの名無しさん
2020/09/28(月) 13:45:59.88ID:A9tQ9Jdm 7もお漏らしして欲しいね
357デフォルトの名無しさん
2020/09/28(月) 13:53:48.40ID:n9LyrBhU 未だに使ってる奴が死ぬだけ
358デフォルトの名無しさん
2020/09/28(月) 14:33:51.78ID:PAQov7G9 海賊版天国の中国死ぬの?
359デフォルトの名無しさん
2020/09/28(月) 15:10:38.57ID:q9HWvXQA 穴がさらにいっぱい見つかって攻撃方法が増えるんだから自明だろ
誰が対応するんや
誰が対応するんや
360デフォルトの名無しさん
2020/09/28(月) 16:14:01.27ID:n0MW1Etw 久しぶりに Windows Update したら
Edge レイプされてポカーン
Edge レイプされてポカーン
361デフォルトの名無しさん
2020/09/28(月) 16:42:43.52ID:8K79+FWG スカ ポン タン
362デフォルトの名無しさん
2020/09/28(月) 16:51:28.28ID:QxfbhGyV > Edge レイプ
うまい!
うまい!
363デフォルトの名無しさん
2020/09/29(火) 21:54:15.29ID:6fvRDqpi _beginthreadexだけは許さんよ
もっとも醜悪な名前だわ
もっとも醜悪な名前だわ
364デフォルトの名無しさん
2020/09/29(火) 21:58:00.70ID:LdxVDSVq MJD?
365デフォルトの名無しさん
2020/10/01(木) 23:20:42.73ID:rwmZapHm >>363 すれち
366蟻人間 ◆T6xkBnTXz7B0
2020/10/18(日) 23:53:11.43ID:cRjbazHq http://eternalwindows.jp にはWin32の核心部分が載ってる。参考になる記事だ。
367デフォルトの名無しさん
2020/10/27(火) 20:43:03.29ID:rXCQsaV4 GetOpenFileName で初期ディレクトリとして OPENFILENAME の lpstrInitialDir に
任意のディレクトリを指定してファイルを開くダイアログを開いていて、おおよそ
意図した通りに動いているのですが、"C:\Users\Public\Documents"を指定したときだけ
初期ディレクトリが現在使用中ユーザーのドキュメントディレクトリになってしまいます
アクセス権のない他のユーザーのドキュメントディレクトリを指定したのなら
このような動作は理解できるのですが、パブリックディレクトリでこのように
なってしまうのは仕様でしょうか?
任意のディレクトリを指定してファイルを開くダイアログを開いていて、おおよそ
意図した通りに動いているのですが、"C:\Users\Public\Documents"を指定したときだけ
初期ディレクトリが現在使用中ユーザーのドキュメントディレクトリになってしまいます
アクセス権のない他のユーザーのドキュメントディレクトリを指定したのなら
このような動作は理解できるのですが、パブリックディレクトリでこのように
なってしまうのは仕様でしょうか?
368デフォルトの名無しさん
2020/10/28(水) 11:43:37.22ID:Mf8tEr2f SHGetSpecialFolderPath
369デフォルトの名無しさん
2020/10/28(水) 17:45:50.04ID:DoZwgPmf パブリックディレクトリの取得方法を聞いているわけではないのですが
"C:\Users\Public\Documents" は存在する有効なパスです
"C:\Users\Public\Documents" は存在する有効なパスです
370デフォルトの名無しさん
2020/10/28(水) 18:30:52.56ID:Mf8tEr2f 再現した
C:\Users\Public
ならちゃんと public が開くが
C:\Users\Public\Documents
にすると自分のアカウントに行ってしまう
C:\Users\Public
ならちゃんと public が開くが
C:\Users\Public\Documents
にすると自分のアカウントに行ってしまう
371デフォルトの名無しさん
2020/10/28(水) 18:36:57.63ID:Mf8tEr2f あと存在しないディレクトリを与えると
C:\Users\自分のアカウント\Documents
が開いた
C:\Users\自分のアカウント\Documents
が開いた
372デフォルトの名無しさん
2020/10/28(水) 18:41:30.63ID:Mf8tEr2f lpstrInitialDir
The initial directory. The algorithm for selecting the initial directory varies on different platforms.
Windows 7:
If lpstrInitialDir has the same value as was passed the first time the application used an Open or Save As dialog box, the path most recently selected by the user is used as the initial directory.
Otherwise, if lpstrFile contains a path, that path is the initial directory.
Otherwise, if lpstrInitialDir is not NULL, it specifies the initial directory.
If lpstrInitialDir is NULL and the current directory contains any files of the specified filter types, the initial directory is the current directory.
Otherwise, the initial directory is the personal files directory of the current user.
Otherwise, the initial directory is the Desktop folder.
Windows 2000/XP/Vista:
If lpstrFile contains a path, that path is the initial directory.
Otherwise, lpstrInitialDir specifies the initial directory.
Otherwise, if the application has used an Open or Save As dialog box in the past, the path most recently used is selected as the initial directory. However, if an application is not run for a long time, its saved selected path is discarded.
If lpstrInitialDir is NULL and the current directory contains any files of the specified filter types, the initial directory is the current directory.
Otherwise, the initial directory is the personal files directory of the current user.
Otherwise, the initial directory is the Desktop folder.
The initial directory. The algorithm for selecting the initial directory varies on different platforms.
Windows 7:
If lpstrInitialDir has the same value as was passed the first time the application used an Open or Save As dialog box, the path most recently selected by the user is used as the initial directory.
Otherwise, if lpstrFile contains a path, that path is the initial directory.
Otherwise, if lpstrInitialDir is not NULL, it specifies the initial directory.
If lpstrInitialDir is NULL and the current directory contains any files of the specified filter types, the initial directory is the current directory.
Otherwise, the initial directory is the personal files directory of the current user.
Otherwise, the initial directory is the Desktop folder.
Windows 2000/XP/Vista:
If lpstrFile contains a path, that path is the initial directory.
Otherwise, lpstrInitialDir specifies the initial directory.
Otherwise, if the application has used an Open or Save As dialog box in the past, the path most recently used is selected as the initial directory. However, if an application is not run for a long time, its saved selected path is discarded.
If lpstrInitialDir is NULL and the current directory contains any files of the specified filter types, the initial directory is the current directory.
Otherwise, the initial directory is the personal files directory of the current user.
Otherwise, the initial directory is the Desktop folder.
373デフォルトの名無しさん
2020/10/28(水) 19:43:23.12ID:RpzUgl/d comdlg32.dllのコモンダイアログ関係は >>367 のような想定外の動きをしたり
右クリックのコンテキストメニューで存在しない32bitフォルダを探しに行ったりと色々不具合を抱えてる
明らかにメンテされてない
ダイアログ内のListViewで開発者の想定外の事ができたりするから許されるなら使わない方が良い
右クリックのコンテキストメニューで存在しない32bitフォルダを探しに行ったりと色々不具合を抱えてる
明らかにメンテされてない
ダイアログ内のListViewで開発者の想定外の事ができたりするから許されるなら使わない方が良い
374デフォルトの名無しさん
2020/10/28(水) 20:10:50.98ID:xBovneds コモンコントロール使ってるアプリに使うなと言ってしまうと、開発プラットフォームから見直さないとダメ案件では
375デフォルトの名無しさん
2020/10/29(木) 10:55:01.44ID:XU4TLDfA376デフォルトの名無しさん
2020/10/29(木) 11:27:15.51ID:wwhOrfBp XP 以前と 7 で違うんだから
10 ならさらに変更されたとかありそう
10 ならさらに変更されたとかありそう
377デフォルトの名無しさん
2020/10/29(木) 11:29:27.07ID:wwhOrfBp >コモンコントロール部分だけ差し替えが可能なもの
秀丸ファイラーのdllって無かったかな
秀丸ファイラーのdllって無かったかな
378デフォルトの名無しさん
2020/10/29(木) 13:09:04.28ID:rgNs+gPO IFileDialog使えって話でもないのん?
379デフォルトの名無しさん
2020/11/12(木) 11:33:46.92ID:Twa29Hwt こんにちは、お世話になります。DLLファイルの削除について質問です。
プログラム終了時にロードしたDLLファイルを削除したいのですが、
場合により削除できたりできなかったりします。
実際にはもう少し複雑ですが、大まかな処理の手順を示します。
1: inst=LoadLibrary("tmp.dll")
2: hook=SetWindowsHookEx(...)
3: ...あれやこれやの処理...
4: ret1=UnhookWindowsHookEx(hook)
5: ret2=FreeLibrary(inst)
6: ret3=DeleteFile("tmp.dll")
処理部[3:]は、所望の通り動作していて、inst,hook共に正常値のよ
うです。アプリケーション終了時に[4:]以降の処理を行います。ret1,
ret2は成功値を返すのですが、ret3は失敗し、GetLastErrorの値は5で
ERROR_ACCESS_DENIED「アクセス拒否」を返してきます。アプリ
ケーション終了後はプロンプトからのDELコマンドに成功します。
処理部[3:]をスキップすると、ret3は成功値を返しファイルもただ
しく削除されています。
FreeLibraryだけでは、DLLを開放してくれないのかと思っていますが、
少し手つまりになっています。当方、日曜プログラマレベルの知識で
す。質問などに不備等ございましたらご指摘ください。
(環境)Win10-64bit,Vs2019Comm,VC++
プログラム終了時にロードしたDLLファイルを削除したいのですが、
場合により削除できたりできなかったりします。
実際にはもう少し複雑ですが、大まかな処理の手順を示します。
1: inst=LoadLibrary("tmp.dll")
2: hook=SetWindowsHookEx(...)
3: ...あれやこれやの処理...
4: ret1=UnhookWindowsHookEx(hook)
5: ret2=FreeLibrary(inst)
6: ret3=DeleteFile("tmp.dll")
処理部[3:]は、所望の通り動作していて、inst,hook共に正常値のよ
うです。アプリケーション終了時に[4:]以降の処理を行います。ret1,
ret2は成功値を返すのですが、ret3は失敗し、GetLastErrorの値は5で
ERROR_ACCESS_DENIED「アクセス拒否」を返してきます。アプリ
ケーション終了後はプロンプトからのDELコマンドに成功します。
処理部[3:]をスキップすると、ret3は成功値を返しファイルもただ
しく削除されています。
FreeLibraryだけでは、DLLを開放してくれないのかと思っていますが、
少し手つまりになっています。当方、日曜プログラマレベルの知識で
す。質問などに不備等ございましたらご指摘ください。
(環境)Win10-64bit,Vs2019Comm,VC++
380デフォルトの名無しさん
2020/11/12(木) 11:49:17.96ID:Twa29Hwt 追記
2: hook=SetWindowsHookEx(WH_KEYBOARD_LL,proc,inst,0)
フックにDLLインスタンスが絡みます。
2: hook=SetWindowsHookEx(WH_KEYBOARD_LL,proc,inst,0)
フックにDLLインスタンスが絡みます。
381デフォルトの名無しさん
2020/11/12(木) 11:54:18.15ID:fy6Pt/Zo 1〜2をやるボタンAと
4〜5をやるボタンBを配置して
ボタンBを押してから6やってみた?
4〜5をやるボタンBを配置して
ボタンBを押してから6やってみた?
382デフォルトの名無しさん
2020/11/12(木) 12:09:45.05ID:Twa29Hwt >>381 ありがと
いや、そういう処理の分解はやってないです。
ただ、[5:]と[6:]の間にSleep(10000)を挟んでみた。OSが手放してくれる時
間?が必要かと思って・・・でも、そういう事じゃないみたい。
ボタンの配置はすぐには難しいですが(汗)。でも、とりあえず、物は試しで
ユーザの入力待ちを挟んでみます。getch()あたりで・・・。
いや、そういう処理の分解はやってないです。
ただ、[5:]と[6:]の間にSleep(10000)を挟んでみた。OSが手放してくれる時
間?が必要かと思って・・・でも、そういう事じゃないみたい。
ボタンの配置はすぐには難しいですが(汗)。でも、とりあえず、物は試しで
ユーザの入力待ちを挟んでみます。getch()あたりで・・・。
383デフォルトの名無しさん
2020/11/12(木) 12:16:08.75ID:f5BAQJxF DLL_PROCESS_DETACH が正しく呼ばれてないか処理されてないんじゃね
https://stackoverflow.com/questions/19934000/how-to-correctly-dispose-of-injected-dll-thread
https://stackoverflow.com/questions/19934000/how-to-correctly-dispose-of-injected-dll-thread
384デフォルトの名無しさん
2020/11/12(木) 12:17:21.07ID:f5BAQJxF あと 6 だけ実行する別のアプリを造っておいて
アプリ終了後にそれを呼ぶとか
アプリ終了後にそれを呼ぶとか
385デフォルトの名無しさん
2020/11/12(木) 12:23:11.40ID:Twa29Hwt >>383
モニタしてみる。
モニタしてみる。
386デフォルトの名無しさん
2020/11/12(木) 12:25:59.48ID:Twa29Hwt ・・・呼ばれてない
387デフォルトの名無しさん
2020/11/12(木) 12:31:44.05ID:Twa29Hwt 379です。進展しそうなので、この質問はいったんクローズさせてください。
グーグル先生に「dll_process_detach 呼ばれない」と聞くと、イロイロ出て
きそうです。
381、383 ありがとうございました m(_ _)m
グーグル先生に「dll_process_detach 呼ばれない」と聞くと、イロイロ出て
きそうです。
381、383 ありがとうございました m(_ _)m
388デフォルトの名無しさん
2020/11/12(木) 17:06:23.69ID:n8RQesMu 呼び出しプロセスが終了するまではDLLの解放はされなかった気がする
つまり>>384が正解なのではないかと
つまり>>384が正解なのではないかと
389デフォルトの名無しさん
2020/11/12(木) 20:28:25.76ID:g7bSPYZf 32bitアプリからShellExecuteでバッチファイルを呼ぶと当然ながら32bit環境で実行されるんだけど
これを64bitに強制できないかな
これを64bitに強制できないかな
390蟻人間 ◆T6xkBnTXz7B0
2020/11/12(木) 20:47:44.37ID:vr1SOjIj >>389
Wow64DisableWow64FsRedirectionを使う痛い方法があるけど、推奨できない。64bit processを経由した方が痛みは少ない。
Wow64DisableWow64FsRedirectionを使う痛い方法があるけど、推奨できない。64bit processを経由した方が痛みは少ない。
391デフォルトの名無しさん
2020/11/12(木) 20:48:10.58ID:g7bSPYZf でてきた
PVOID m_lpOldVar = 0;
Wow64DisableWow64FsRedirection(&m_lpOldVar);
//この間に書けばいいらしい
ShellExecute(hWnd,"open","cmd","param","dir",SW_SHOWNORMAL);
Wow64RevertWow64FsRedirection(&m_lpOldVar);
これでいいのかな?
PVOID m_lpOldVar = 0;
Wow64DisableWow64FsRedirection(&m_lpOldVar);
//この間に書けばいいらしい
ShellExecute(hWnd,"open","cmd","param","dir",SW_SHOWNORMAL);
Wow64RevertWow64FsRedirection(&m_lpOldVar);
これでいいのかな?
392デフォルトの名無しさん
2020/11/12(木) 20:53:06.64ID:g7bSPYZf ほんとは32bitアプリを64bit化すりゃいいんだけど思いの外大変なので諦めた
以下バッチ側で判定する方法
@echo off
if %PROCESSOR_ARCHITECTURE%==x86 (
if "%PROCESSOR_ARCHITEW6432%" == "AMD64" (
rem 32bit WOW64
C:\Windows\sysnative\cmd.exe /c %~dp0%~n0%~x0
exit /b 0
) else (
goto :PASSX64
)
) else (
goto :PASSX64
)
:PASSX64
以降x64前提の処理
以下バッチ側で判定する方法
@echo off
if %PROCESSOR_ARCHITECTURE%==x86 (
if "%PROCESSOR_ARCHITEW6432%" == "AMD64" (
rem 32bit WOW64
C:\Windows\sysnative\cmd.exe /c %~dp0%~n0%~x0
exit /b 0
) else (
goto :PASSX64
)
) else (
goto :PASSX64
)
:PASSX64
以降x64前提の処理
393蟻人間 ◆T6xkBnTXz7B0
2020/11/12(木) 20:54:02.43ID:vr1SOjIj リダイレクトを無効化して、system32のcmdを指定すればいけるやろ。
394デフォルトの名無しさん
2020/11/12(木) 22:20:33.81ID:4764QnvC プロセス起動だけを担当する小さな64bitアプリを作ればいいじゃない。
395デフォルトの名無しさん
2020/11/15(日) 15:23:41.28ID:18uzJ+HT 379です。
LoadLibrary()でロードしたDLLが呼び出しプロセスから削除できない件のご報告。
方法が正しいのか悪いのか(不具合を発生させる可能性を持つのか)わかりませんが、
削除することには成功しました。383さんがご指摘の「DLL_PROCESS_DETACH
が呼ばれてないんじゃない?」とMSDNのFreeLibraryの文書をヒントに、
FreeLibrary()がゼロを返すまで複数回繰り返す方法で対処できました。DLLモ
ジュールへの参照数が無くなった時点でDLL_PROCESS_DETACHが発生するよう
です。また、ゼロを返した時のGetLastError()値は126(ERROR_MOD_NOT_FOUND)
です。
適当にいじりながらモニタしてみるました。すると、DLL_PROCESS_ATTACHは
1回しか呼び出されていないにもかかわらず、DLLモジュールは1または2の参照カ
ウントを持っているようです。どのタイミングで2になるのか、また3回目が発生
しないのかは、追い切れていません(汗。エラー検出で正常・・・的な行儀のよい
コードとは思えませんが、とりあえず、要モニタリングで先に進みたいとおもいま
す。
このあたり、お詳しい方がおられましたらご指導いただけると助かります。今のと
ころ困ってはいませんので、お暇なときにでも^^。ありがとうございました。
LoadLibrary()でロードしたDLLが呼び出しプロセスから削除できない件のご報告。
方法が正しいのか悪いのか(不具合を発生させる可能性を持つのか)わかりませんが、
削除することには成功しました。383さんがご指摘の「DLL_PROCESS_DETACH
が呼ばれてないんじゃない?」とMSDNのFreeLibraryの文書をヒントに、
FreeLibrary()がゼロを返すまで複数回繰り返す方法で対処できました。DLLモ
ジュールへの参照数が無くなった時点でDLL_PROCESS_DETACHが発生するよう
です。また、ゼロを返した時のGetLastError()値は126(ERROR_MOD_NOT_FOUND)
です。
適当にいじりながらモニタしてみるました。すると、DLL_PROCESS_ATTACHは
1回しか呼び出されていないにもかかわらず、DLLモジュールは1または2の参照カ
ウントを持っているようです。どのタイミングで2になるのか、また3回目が発生
しないのかは、追い切れていません(汗。エラー検出で正常・・・的な行儀のよい
コードとは思えませんが、とりあえず、要モニタリングで先に進みたいとおもいま
す。
このあたり、お詳しい方がおられましたらご指導いただけると助かります。今のと
ころ困ってはいませんので、お暇なときにでも^^。ありがとうございました。
396デフォルトの名無しさん
2020/11/15(日) 15:57:26.98ID:1cE4y5+G >FreeLibrary()がゼロを返すまで複数回繰り返す
なるほど
自分以外が使ってないことが確実に言えるならこれで良いんじゃないかな
なるほど
自分以外が使ってないことが確実に言えるならこれで良いんじゃないかな
397デフォルトの名無しさん
2020/11/15(日) 16:00:32.57ID:U+/Dwi3J 実は自分で 2回 LoadLibrary してましたというオチですね判ります
398デフォルトの名無しさん
2020/11/15(日) 16:26:04.91ID:e/1XaXi9 ズコー
LoadLibraryをAPIHookしちゃおうぜ
LoadLibraryをAPIHookしちゃおうぜ
399デフォルトの名無しさん
2020/11/15(日) 18:00:54.67ID:18uzJ+HT 長文で申し訳ない。
396
自分しか使っていないDLLであることは間違い無いので・・・とりあえず現状で
すすめる感じ。動いてるからOKは無能感アリアリです。リファレンスカウント
を追いかける事もできるようですが、沼入間違いなし。もし3回目が発生したら
ワーニング出してるので、報告してもらいます。ありがと。フックの時、DLLイン
スタンスを与えてるので、その時、参照が追加されるのかな、などと妄想するわけ
です。
297
判りますか!・・・さすがです。あおりでないと思ってマジレス。
ユーザの起因でLoadLibraryが2回実行される可能性として思い当たるのが:
1.メインプロセスが終了していないうちにデバグなどで再度起動しちゃった。
2.LoadLibrary呼び出しのの箇所をプログラムカウンタが2回通過している。
辺りでしょうか。1は、多重起動が排除されていて、かつタスクマネジャにも出て
いないので可能性が低い。2は、ブレークポイントとprintf()でモニタしてて多分
ないかなぁ。他アドバイスありましたらよろしくお願いいたしますm(_ _)m。
398
LoadLibraryをフックして、どのタイミングで呼び出されるのかを理解する感じ
ですか?APIフックかぁ・・・経験値が足りないのでハマりそうだなぁ。thx。
396
自分しか使っていないDLLであることは間違い無いので・・・とりあえず現状で
すすめる感じ。動いてるからOKは無能感アリアリです。リファレンスカウント
を追いかける事もできるようですが、沼入間違いなし。もし3回目が発生したら
ワーニング出してるので、報告してもらいます。ありがと。フックの時、DLLイン
スタンスを与えてるので、その時、参照が追加されるのかな、などと妄想するわけ
です。
297
判りますか!・・・さすがです。あおりでないと思ってマジレス。
ユーザの起因でLoadLibraryが2回実行される可能性として思い当たるのが:
1.メインプロセスが終了していないうちにデバグなどで再度起動しちゃった。
2.LoadLibrary呼び出しのの箇所をプログラムカウンタが2回通過している。
辺りでしょうか。1は、多重起動が排除されていて、かつタスクマネジャにも出て
いないので可能性が低い。2は、ブレークポイントとprintf()でモニタしてて多分
ないかなぁ。他アドバイスありましたらよろしくお願いいたしますm(_ _)m。
398
LoadLibraryをフックして、どのタイミングで呼び出されるのかを理解する感じ
ですか?APIフックかぁ・・・経験値が足りないのでハマりそうだなぁ。thx。
400デフォルトの名無しさん
2020/11/15(日) 18:03:54.84ID:pziaxEZW >>395
FreeLibrary()は何回呼び出して何回目でゼロが返ってきてるの?
FreeLibrary()は何回呼び出して何回目でゼロが返ってきてるの?
401デフォルトの名無しさん
2020/11/15(日) 18:54:05.48ID:18uzJ+HT 400さん、レスありがとう。実際のコードはi値の制限などもちっと複雑なので
すが、感じとしては、WinMainに以下のように記されています。
1: i=0;
2: for(;;) {
3: i++;
4: ret=FreeLibrary(dllinst);
5: if(res==0) {
6: n=GetLastError();
7: break;
8: }
9: }
場合によるのですが、ループを出た時のi値は2か3を示します。nは126です。
i値が2になるケース、3になるケースは、初回投稿 >>379 に示してあります。
フックの初回呼び出しにリファレンスが追加・・・かなぁ(妄想。
すが、感じとしては、WinMainに以下のように記されています。
1: i=0;
2: for(;;) {
3: i++;
4: ret=FreeLibrary(dllinst);
5: if(res==0) {
6: n=GetLastError();
7: break;
8: }
9: }
場合によるのですが、ループを出た時のi値は2か3を示します。nは126です。
i値が2になるケース、3になるケースは、初回投稿 >>379 に示してあります。
フックの初回呼び出しにリファレンスが追加・・・かなぁ(妄想。
402デフォルトの名無しさん
2020/11/15(日) 19:40:59.29ID:pziaxEZW >>401
4でretなのに5でresなのは誤字かな?
4でretなのに5でresなのは誤字かな?
403デフォルトの名無しさん
2020/11/15(日) 19:54:35.90ID:pziaxEZW というか>>379でいうと
> 3: ...あれやこれやの処理...
ここに原因があるってことでしょ
そこ次第じゃないの?
> 3: ...あれやこれやの処理...
ここに原因があるってことでしょ
そこ次第じゃないの?
404デフォルトの名無しさん
2020/11/15(日) 20:18:38.41ID:qoaGDZ/5 まず>>379の1の直前・直後での山椒カウンターから調べてみるとか
405デフォルトの名無しさん
2020/11/15(日) 20:46:59.18ID:ALi3WLRE LoadLibraryの参照カウンタって簡単に取れたっけ?
昔DDKのヘッダ持ってきてゴニョゴニョやった気がする。
しかもwin7と8以降で構造体定義が違ったり。
昔DDKのヘッダ持ってきてゴニョゴニョやった気がする。
しかもwin7と8以降で構造体定義が違ったり。
406デフォルトの名無しさん
2020/11/15(日) 20:52:47.67ID:gutimSe2 成功するまで n回 FreeLibraryを試みて LoadLibrary しなおす?
ATTACH と DETACH が副作用おこすかもだけど
ATTACH と DETACH が副作用おこすかもだけど
407デフォルトの名無しさん
2020/11/15(日) 21:30:45.30ID:18uzJ+HT みなさん、こんな漠然とした質問に答えてくださってありがとう。
404さん、405さん。参照カウンタの取得は、現象の理解に役に立つとは思います
が・・・なにぶん日曜プログラマなものですから。
google先生 「win32api how to get dll reference count」
でめぼしい情報はPEB(Process environment block)のLDR_MODULE構造体がう
んちゃらで(マト違い?)、ハードルの高さを感じました。
406さん。おっしゃる通りです。ユーザーのコード内でLoadLibraryが1度だけ
呼ばれるのだけど、参照カウンタが2になっている点は重要と認識しています。
3になるかもしれないし、いつ増えるかも妄想の範囲を出ません。FreeLibrary
するループ内で参照カウンタが変化かもとかゾッとします。
というわけで、今のところ警告を出して他の現象も集めてみたいと思っています。
が、人に使ってもらうレベルでは、参照カウンタの振る舞いは押さえておかないと
いけないという認識です。
404さん、405さん。参照カウンタの取得は、現象の理解に役に立つとは思います
が・・・なにぶん日曜プログラマなものですから。
google先生 「win32api how to get dll reference count」
でめぼしい情報はPEB(Process environment block)のLDR_MODULE構造体がう
んちゃらで(マト違い?)、ハードルの高さを感じました。
406さん。おっしゃる通りです。ユーザーのコード内でLoadLibraryが1度だけ
呼ばれるのだけど、参照カウンタが2になっている点は重要と認識しています。
3になるかもしれないし、いつ増えるかも妄想の範囲を出ません。FreeLibrary
するループ内で参照カウンタが変化かもとかゾッとします。
というわけで、今のところ警告を出して他の現象も集めてみたいと思っています。
が、人に使ってもらうレベルでは、参照カウンタの振る舞いは押さえておかないと
いけないという認識です。
408デフォルトの名無しさん
2020/11/15(日) 21:38:16.46ID:18uzJ+HT 追記:
LoadLibraryが2度呼ばれてましたとかいうオチの時は、正直に詫びを入れることを
お約束いたします。いやマジで、ユーザーコード全部で記述は1ヶ所だけし、2回通っ
てないし(大汗。
LoadLibraryが2度呼ばれてましたとかいうオチの時は、正直に詫びを入れることを
お約束いたします。いやマジで、ユーザーコード全部で記述は1ヶ所だけし、2回通っ
てないし(大汗。
409蟻人間 ◆T6xkBnTXz7B0
2020/11/15(日) 21:50:53.68ID:Ixphny8D LoadLibraryしたライブラリの名前は何ですか?
410デフォルトの名無しさん
2020/11/15(日) 22:22:34.55ID:18uzJ+HT exeと同じディレクトリに置かれたtmp.dllという名前です。DLLによっては、
参照が増える可能性があるということでしょうか。私が書いたコードですが中
身はほぼ空っぽです。たまにデバグやモニタの為にprintfします。コピペで手
加工のためtypoしてたらごめんなさい。
* tmpdll.cppの中身
01: BOOL APIENTRY DllMain(
02: HINSTANCE hinst,
03: DWORD reason,
04: LPVOID rsv
05: ) {
06: switch (reason) {
07: case DLL_PROCESS_ATTACH:
08: DisableThreadLibraryCalls(hinst);
09: break;
10: case DLL_PROCESS_DETACH:
11: break;
12: case DLL_THREAD_ATTACH:
13: break;
14: case DLL_THREAD_DETACH:
15: break;
16: default:
17: break;
18: }
19: return TRUE;
20: }
* コンパイルコマンド:
>cl.exe /LD tmpdll.cpp User32.lib
>move tmpdll.dll tmp.dll
すいませんが、今日はもうレスできません。作業は停滞から抜け出れてますので、
どうかヒマつぶし程度の軽い気持ちで受け答えください(大汗。
参照が増える可能性があるということでしょうか。私が書いたコードですが中
身はほぼ空っぽです。たまにデバグやモニタの為にprintfします。コピペで手
加工のためtypoしてたらごめんなさい。
* tmpdll.cppの中身
01: BOOL APIENTRY DllMain(
02: HINSTANCE hinst,
03: DWORD reason,
04: LPVOID rsv
05: ) {
06: switch (reason) {
07: case DLL_PROCESS_ATTACH:
08: DisableThreadLibraryCalls(hinst);
09: break;
10: case DLL_PROCESS_DETACH:
11: break;
12: case DLL_THREAD_ATTACH:
13: break;
14: case DLL_THREAD_DETACH:
15: break;
16: default:
17: break;
18: }
19: return TRUE;
20: }
* コンパイルコマンド:
>cl.exe /LD tmpdll.cpp User32.lib
>move tmpdll.dll tmp.dll
すいませんが、今日はもうレスできません。作業は停滞から抜け出れてますので、
どうかヒマつぶし程度の軽い気持ちで受け答えください(大汗。
411デフォルトの名無しさん
2020/11/15(日) 23:47:17.82ID:+e2tZbOG 参照カウントは、読み込んだ・実行した回数と関係ないだろ。
複数のプロセスから、参照されていれば、2 以上になるだけだろ
自分が参照すれば1で、
OS も参照すれば、2じゃないの?
自分で参照回数を、0にすべきじゃない。
OSが使っているかも知れないし
OSが何をやっているのか、勉強していない香具師は、妙な事を考えない方がよい。
OSの勉強だけで、何十年も掛かるから
複数のプロセスから、参照されていれば、2 以上になるだけだろ
自分が参照すれば1で、
OS も参照すれば、2じゃないの?
自分で参照回数を、0にすべきじゃない。
OSが使っているかも知れないし
OSが何をやっているのか、勉強していない香具師は、妙な事を考えない方がよい。
OSの勉強だけで、何十年も掛かるから
412デフォルトの名無しさん
2020/11/16(月) 00:11:34.75ID:o4udgoJm ウイルス対策ソフトによる介入まで考えたらさらに増える。
413デフォルトの名無しさん
2020/11/16(月) 00:34:28.20ID:QRq3yxwv >>411
ここで言ってるのはプロセス内の話だぞ?
LoadLibraryを2回やったらFreeLibraryも2回呼ばなきゃならんという話。
>OSが何をやっているのか、勉強していない香具師は、妙な事を考えない方がよい。
ここで言ってるのはプロセス内の話だぞ?
LoadLibraryを2回やったらFreeLibraryも2回呼ばなきゃならんという話。
>OSが何をやっているのか、勉強していない香具師は、妙な事を考えない方がよい。
414411
2020/11/16(月) 01:24:18.28ID:9JpVGitI DLL を2回も呼ぶのか?
一々、DLLをロードしてから、フリーするとか、
そんなに厳密に、メモリを気にしなくても良いのでは?
初心者は、そんな些末な事に、時間を掛けるべきじゃないと思う。
どうせ、1MB とか、ほぼ64 bit では無意味な節約だろ
そういうのを気にしていたら、Ruby などでプログラミングできない。
皆、富豪プログラミングなのにw
一々、DLLをロードしてから、フリーするとか、
そんなに厳密に、メモリを気にしなくても良いのでは?
初心者は、そんな些末な事に、時間を掛けるべきじゃないと思う。
どうせ、1MB とか、ほぼ64 bit では無意味な節約だろ
そういうのを気にしていたら、Ruby などでプログラミングできない。
皆、富豪プログラミングなのにw
415デフォルトの名無しさん
2020/11/16(月) 01:34:45.83ID:X7NjX7T3 411は何も解ってない
416デフォルトの名無しさん
2020/11/16(月) 03:56:24.82ID:+pimEm7D LoadLibraryの参照カウンタはプロセス単位
質問者はDLL_PROCESS_ATTACHが複数回呼ばれると思ってるようだが複数回LoadLibraryしても呼ばれるのは最初の1回だけ
質問者はDLL_PROCESS_ATTACHが複数回呼ばれると思ってるようだが複数回LoadLibraryしても呼ばれるのは最初の1回だけ
417デフォルトの名無しさん
2020/11/16(月) 08:05:49.89ID:cFXcINFw おはようさん。ゆるくいってもらえるとうれしい。
413さん。LoadLibraryを複数回呼べば参照カウンタはそれだけ増えます。
その場合、増えた原因がLoadLibraryと明らかなので特に問題ないと考えます。
わからないのはLoadLibraryが1度のつもりなのに、場合によって一つ増える
現象が不思議だなってあたり。
414さん。まったくその通りです。実際、削除してみたいというのは今のところ
技術的な興味だけで、参照カウンタの増加原因がコードのどの部分なのかが
わかれば自分が面白いという点だけです。対応策は削除しない策も含めて2、3
考えていて重大ではなくなっています。時間がもったいないですね。
461さん。アプリケーションが起動されたプロセスで、DLL_PROCESS_ATTACH
はLoadLibraryの時に1度、DLL_PROCESS_DETACHはFreeLibraryにより参照カ
ウンタが0になった時に1度だけです。このように理解していますが^^;。
参照カウンタはプロセス毎に持っていて、自プロセスのFreeLibraryが2回成功
するということは、自プロセスの参照カウンタが2になっていると考えていま
す。他のプロセスがtmp.dllをロードしても、自プロセスの持つ参照カウンタは
増えません。予想の範囲をでませんが、自分の書いたコードの中のあるAPI関数
が参照カウンタを増やしている、たぶん初回のフックプロシジャ起動の時に増え
てるっぽい。ですので、現象を正しく理解するには、結局の所、参照カウンタを
モニタして増減のポイントを押さえ、可否を判断するのが本道かなとも思います
・・・難しそうですよね。APIは勝手に参照カウンタ増やすよ?なんてアドバイ
スがあると、よかったのですが。
長文でくどくなって、イラついている人がいそうですね。この辺で、一度この話
題から私は離れたいと思います。アドバイスくださった方がた、どうもありがと
うございました。
413さん。LoadLibraryを複数回呼べば参照カウンタはそれだけ増えます。
その場合、増えた原因がLoadLibraryと明らかなので特に問題ないと考えます。
わからないのはLoadLibraryが1度のつもりなのに、場合によって一つ増える
現象が不思議だなってあたり。
414さん。まったくその通りです。実際、削除してみたいというのは今のところ
技術的な興味だけで、参照カウンタの増加原因がコードのどの部分なのかが
わかれば自分が面白いという点だけです。対応策は削除しない策も含めて2、3
考えていて重大ではなくなっています。時間がもったいないですね。
461さん。アプリケーションが起動されたプロセスで、DLL_PROCESS_ATTACH
はLoadLibraryの時に1度、DLL_PROCESS_DETACHはFreeLibraryにより参照カ
ウンタが0になった時に1度だけです。このように理解していますが^^;。
参照カウンタはプロセス毎に持っていて、自プロセスのFreeLibraryが2回成功
するということは、自プロセスの参照カウンタが2になっていると考えていま
す。他のプロセスがtmp.dllをロードしても、自プロセスの持つ参照カウンタは
増えません。予想の範囲をでませんが、自分の書いたコードの中のあるAPI関数
が参照カウンタを増やしている、たぶん初回のフックプロシジャ起動の時に増え
てるっぽい。ですので、現象を正しく理解するには、結局の所、参照カウンタを
モニタして増減のポイントを押さえ、可否を判断するのが本道かなとも思います
・・・難しそうですよね。APIは勝手に参照カウンタ増やすよ?なんてアドバイ
スがあると、よかったのですが。
長文でくどくなって、イラついている人がいそうですね。この辺で、一度この話
題から私は離れたいと思います。アドバイスくださった方がた、どうもありがと
うございました。
418デフォルトの名無しさん
2020/11/16(月) 08:26:01.14ID:bJvdDL6U 自発的なdllの削除ってなると >>412 の件は厄介かもな
419411
2020/11/16(月) 09:50:44.37ID:9JpVGitI Windows は、クローズドOS だから、何をやってるか分からない
ファイルをロックするためにとか、メモリから追い出されないために、
参照回数を増加させるかも知れない
だから、自分が1回しか呼んでいなのなら、参照回数を2回減らしてはいけない。
2回減らしても、無視されるだけかも知れないけど
自分が増やした分だけを、減らすべき!
ファイルをロックするためにとか、メモリから追い出されないために、
参照回数を増加させるかも知れない
だから、自分が1回しか呼んでいなのなら、参照回数を2回減らしてはいけない。
2回減らしても、無視されるだけかも知れないけど
自分が増やした分だけを、減らすべき!
420デフォルトの名無しさん
2020/11/16(月) 12:14:15.53ID:Hr3Y8q39 なんか参照カウントと単なるカウンタが入り乱れてそうな流れ
421デフォルトの名無しさん
2020/11/16(月) 12:21:40.31ID:sF1WJXNT 全部読まずにresするが
元々自分のexeの依存dllにそのdllを入れちゃってるのに
さらにLoadLibraryしてるとかかな
元々自分のexeの依存dllにそのdllを入れちゃってるのに
さらにLoadLibraryしてるとかかな
422デフォルトの名無しさん
2020/11/16(月) 20:18:45.97ID:kmoq+Q7j DLLのコードもあるなら別にDLLで無くてもいいのではと思ってしまうw
423デフォルトの名無しさん
2020/11/24(火) 20:44:41.98ID:/h51r/r1424デフォルトの名無しさん
2020/11/26(木) 18:31:15.60ID:ryn8MPPQ どうなってんの?
void ListView_GetItemCount(
hwnd
);
https://docs.microsoft.com/en-us/windows/win32/api/commctrl/nf-commctrl-listview_getitemcount
void ListView_GetItemCount(
hwnd
);
https://docs.microsoft.com/en-us/windows/win32/api/commctrl/nf-commctrl-listview_getitemcount
425デフォルトの名無しさん
2020/11/26(木) 19:21:32.18ID:+pStE+xj 普通そういう時はメッセージの方見るよね
426デフォルトの名無しさん
2020/11/26(木) 19:21:58.33ID:AZoEWn7U 言語的お作法
427デフォルトの名無しさん
2020/11/26(木) 19:47:30.99ID:35iFwdoe マクロだし
428デフォルトの名無しさん
2020/11/26(木) 20:19:49.68ID:ryn8MPPQ なんか滅茶苦茶だな
古いMSDNライブラリ2008ではshellコントロールもCE5.0も正しい定義が出てる
メンテ止めても表示崩す必要無いだろに...
https://docs.microsoft.com/en-us/previous-versions/windows/embedded/aa453326(v=msdn.10)
久々にapi使ってコード書こうかと思ったがガックリだわ
古いMSDNライブラリ2008ではshellコントロールもCE5.0も正しい定義が出てる
メンテ止めても表示崩す必要無いだろに...
https://docs.microsoft.com/en-us/previous-versions/windows/embedded/aa453326(v=msdn.10)
久々にapi使ってコード書こうかと思ったがガックリだわ
429デフォルトの名無しさん
2020/11/27(金) 18:59:42.70ID:Iha9xPer ListView_GetItemCount
Retrieves the number of items in a list-view control. You can use this macro or send the LVM_GETITEMCOUNT message explicitly.
int ListView_GetItemCount(
HWND hwnd
);
Parameters
hwnd
Handle to the list-view control.
Return Values
Returns the number of items.
Retrieves the number of items in a list-view control. You can use this macro or send the LVM_GETITEMCOUNT message explicitly.
int ListView_GetItemCount(
HWND hwnd
);
Parameters
hwnd
Handle to the list-view control.
Return Values
Returns the number of items.
430デフォルトの名無しさん
2020/11/27(金) 20:15:59.56ID:k8xXZ238 エラーの詳細を取得するには、関数を使います。
431デフォルトの名無しさん
2020/12/08(火) 15:48:41.35ID:jRmhdWmE なぜですか?
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13212452128
質問者からのお礼コメント
小学生でもわかるような回答ではなく、なぜそうなのかも回答できないと社会人として微妙ですよ。
わかる箇所だけ答えるのはニワカです。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13212452128
質問者からのお礼コメント
小学生でもわかるような回答ではなく、なぜそうなのかも回答できないと社会人として微妙ですよ。
わかる箇所だけ答えるのはニワカです。
432デフォルトの名無しさん
2020/12/12(土) 17:55:49.91ID:UcE3yZq1 浣腸電灯めりくり
433デフォルトの名無しさん
2020/12/13(日) 17:26:48.55ID:/mwshU+q AllocConsoleでコンソールを開いてそこからstdio.hのscanfしたいのですが、
ノンブロッキングではないので呼び出し側が固まってしまいます。
そこでscanf的な機能をもつノンブロッキングな関数をつくりたい。
FILE_FLAG_OVERLAPPEDでCONIN$を開いてReadFileで読むまではいいのですが
ReadFileしていない間の入力もバッファリングしてしまいます。そういう機能だから当然ですが。
このバッファリングをうまくオンオフする方法、もしくはバッファを棄てる方法はないでしょうか?
それともFILE_FLAG_OVERLAPPEDではない別の方法があるのでしょうか?
ノンブロッキングではないので呼び出し側が固まってしまいます。
そこでscanf的な機能をもつノンブロッキングな関数をつくりたい。
FILE_FLAG_OVERLAPPEDでCONIN$を開いてReadFileで読むまではいいのですが
ReadFileしていない間の入力もバッファリングしてしまいます。そういう機能だから当然ですが。
このバッファリングをうまくオンオフする方法、もしくはバッファを棄てる方法はないでしょうか?
それともFILE_FLAG_OVERLAPPEDではない別の方法があるのでしょうか?
434デフォルトの名無しさん
2020/12/13(日) 17:32:24.33ID:cAYsSKhI 読み込んだ文字列をsscanf
435デフォルトの名無しさん
2020/12/13(日) 17:35:08.88ID:/mwshU+q CONIN$を開いたハンドルをCloseHandleで閉じたりFlushFileBuffersしたりは試しました。
436デフォルトの名無しさん
2020/12/13(日) 17:37:07.75ID:/mwshU+q437デフォルトの名無しさん
2020/12/13(日) 17:40:51.11ID:cAYsSKhI setvbuf
438蟻人間 ◆T6xkBnTXz7B0
2020/12/13(日) 17:48:17.56ID:zFOj0dh9439デフォルトの名無しさん
2020/12/13(日) 18:26:49.33ID:/mwshU+q setvbufやfreopenはcランタイムの関数で、バッファもOVERLAPPEDのバッファとは違う気がします
freopenしたstdinからのscanfがブロックされてしまうというのが443の話なので
そこからノンブロッキングのAPIを使う必要があるのでは、ということになったわけです
freopenしたstdinからのscanfがブロックされてしまうというのが443の話なので
そこからノンブロッキングのAPIを使う必要があるのでは、ということになったわけです
440デフォルトの名無しさん
2020/12/13(日) 19:01:38.77ID:/mwshU+q ReadConsoleってAPIもブロッキングなので使えないわけですが、低レベルなReadConsoleInputというのもあるらしく
OverlappedでのReadFileよりこっちの方が正攻法なようです。
ともかくやってみます。
ありがとうございました。
OverlappedでのReadFileよりこっちの方が正攻法なようです。
ともかくやってみます。
ありがとうございました。
441デフォルトの名無しさん
2020/12/13(日) 20:23:25.03ID:casXcC2M442デフォルトの名無しさん
2020/12/13(日) 21:23:50.52ID:w0iK+TRN 生のコンソールは制約が多いから
コンソールアプリの入出力を奪って適当なコンソールもどき作った方が早そうだけど
コンソールアプリの入出力を奪って適当なコンソールもどき作った方が早そうだけど
443デフォルトの名無しさん
2020/12/14(月) 00:15:39.66ID:pdqk93XN444デフォルトの名無しさん
2020/12/14(月) 11:31:29.18ID:AspHUlaN445デフォルトの名無しさん
2020/12/14(月) 12:14:03.24ID:GY9gb+Ps コマンドプロンプトのコンソールを使う案件は、スクリプト言語とのプロセス通信を使ったほうが幸せになれる確立が高い。
446デフォルトの名無しさん
2020/12/19(土) 12:04:23.50ID:+WDUx37o GetProcAddressってAやWないよね?
それでいてwcharでもcharでも機能するのは仕様?
それでいてwcharでもcharでも機能するのは仕様?
447デフォルトの名無しさん
2020/12/19(土) 12:37:56.57ID:/QQvHqFx wchar_t*渡して正常に動作するか?
448デフォルトの名無しさん
2020/12/28(月) 00:26:19.90ID:222C9err __declspec(thread)の変数ってスレッドごとに記憶域をもつわけですが
APIのTlsGetValue等でどうやって実現してるんでしょうか?
TLSインデックスをうまくスレッドハンドルと結び付けなけりゃならないと思うんですが。
APIのTlsGetValue等でどうやって実現してるんでしょうか?
TLSインデックスをうまくスレッドハンドルと結び付けなけりゃならないと思うんですが。
449デフォルトの名無しさん
2020/12/28(月) 02:51:22.15ID:p5Tcw1Ej 正直、このあたりは深く考えないことをオススメするのですが。
興味があるということであれば↓を参照しつつ。
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/6_6.html
コンパイラが__declspec(thread)の変数があった時に、どのようなコードを出力しているか
逆アセンブルしてみると理解が深まると思われます
興味があるということであれば↓を参照しつつ。
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/6_6.html
コンパイラが__declspec(thread)の変数があった時に、どのようなコードを出力しているか
逆アセンブルしてみると理解が深まると思われます
450デフォルトの名無しさん
2020/12/28(月) 09:50:34.64ID:222C9err■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- 【カブス】今永昇太 1年約34億円で残留へ QO受諾 米メディア報じる [鉄チーズ烏★]
- 【悲報】おこめ券、9.5億円配布分のうち2.4億が経費、うちJAが1億円中抜き🤗高市ありがとう [359965264]
- 【悲報】高市有事で日本に同調する国、1つも現れないwwwwwwwwwwwwwww [603416639]
- 【雑談】暇人集会所part19
- 不知火フレア、尾丸ポルカ、星街すいせい、さくらみこ、白銀ノエル「「「「「お前くんっ!結婚して!」」」」」←誰を選ぶ?
- 自閉症が「んなっしょい」と連呼するお🏡
- ブラックフライデーでダークソウル買って初プレイしてみようかなと思うけどどうかな
