Win32API質問箱 Build126

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/05/01(金) 22:16:51.96ID:ZJ42fMZB
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/
2021/08/19(木) 01:26:06.58ID:EXq1UPUJ
>>725
>実際にはコピーした後で削除している。
それは異なるドライブの場合だろ?
同じドライブの場合はファイルシステムの書き換えだけのはずだろ
2021/08/19(木) 03:06:16.65ID:2X4o3WxG
>>725-726
レスありがとうございます
質問が長くなったので要点を絞り込んだつもりでしたが、もう少し追記させていただきます

dst_pathはpathの拡張子のみを変更したものですので、同じドライブ・フォルダになります
また、MoveFileの仕組みは仰るような仕組みで理解しているつもりですが、renameでも解決しないのが理解に苦しむところです
(といってもrenameの実装がどうなっているのか知らないのですが)

この処理で行っていることは、テキストログ中の不要な行を削除したいということで、

【現在の処理】
Dを削除。
SをDに移動(実際はSをDにコピーしてSを削除)。
Dを読み込みながら、Sに新規書き込み(削除したい行を読み捨てながら)。

という単純なことを行っていますのでご提案そのままではだめですが

【修正案】
Sを読み込みながら、Dに新規書き込み(削除したい行を読み捨てながら)。
Sを削除。
DをSにリネーム(MoveFile/rename)。

が思い付くのですが、そうするとSを書き込んでいるところ(全く別の場所ですが)で
もしかしてエラーが出るようになるのではという不安があります

いっそのことMoveFileの代わりになるものを自分で作ることも思い浮かびますが、
そもそも論として今回のような処理でここまでするものなのか?
という疑問と疑心暗鬼に陥っています
2021/08/19(木) 09:56:10.36ID:SzZ4tH6X
原因についてはわかりませんが。。。
MoveFile()代替として、ハンドル開いた状態でファイル名を変更する場合にはSetFileInformationByHandle()を使用する。

HANDLE h =CreateFileW(srcfilename, GENERIC_READ| GENERIC_WRITE| DELETE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
size_t fri_size =sizeof(FILE_RENAME_INFO)+(wcslen(dstfilename)+1)*sizeof(wchar_t);
FILE_RENAME_INFO *fri =(FILE_RENAME_INFO *)malloc(fri_size); memset(fri, 0, fri_size);
wcscpy(fri->FileName, dstfilename);
fri->ReplaceIfExists =TRUE;
fri->FileNameLength =(DWORD)wcslen(dstfilename);
fri->RootDirectory =NULL;
BOOL res =SetFileInformationByHandle(h, FileRenameInfo, fri, (DWORD)fri_size);
free(fri);
CloseHandle(h);
2021/08/19(木) 18:37:22.67ID:STngTfXn
>>724
fopenでのエラーを調べるならGetLastErrorじゃなくてerrnoじゃないかな?
2021/08/19(木) 21:29:03.55ID:kB3hjHkq
>>724
カーネル内でのリソース開放は即座に行われるとは限らない。
お触りしたプロセスがいなくなった後でもカーネルの中で残ることがある。
この場合は成功するまでfopen()するしかないね。
2021/08/20(金) 01:37:15.55ID:irg7D4zd
皆さんありがとうございます

>>728
対象ファイルがテキストファイルで一行ずつの処理のため、CreateFile系では
fgets系のAPIがないのでそこまで自作する必要がある点で最終手段として取っておきたいと思います

>>729
内部でWin32APIを叩いているイメージがありましたが、確かに言われてみればerrnoを使うべきですね
そのようにしてみます
2021/08/20(金) 01:39:08.93ID:irg7D4zd
>>730
本件とは別件で新たな質問になってしまいますが、

プロセスAでファイルAをunlinkで削除
WM_APPを別プロセスBにPostMessageで通知
プロセスBでファイルAを再作成(プロセスBが起動していなくても、起動時にファイルAが無ければ再作成)

という箇所があるのですが、要するにキャッシュファイル的なものを削除して別プロセスで再作成を指示するようなことをしています
ここも稀に(?)再作成で失敗することがあるので気になっていました

Windowsプログラミングにおいて、ファイルの削除や移動についてはその後ウェイトを挟むか、
ファイルの作成でエラーが出たらリトライを入れるというのは常識的なものなのでしょうか?
2021/08/20(金) 07:19:25.62ID:BD3SOXSp
確実に作りたければ、中間ファイル作るやろ
2021/08/20(金) 07:42:41.01ID:T1KE4JYK
まーた覚え立ての言葉使いたがる子供が
735デフォルトの名無しさん
垢版 |
2021/08/20(金) 09:25:06.01ID:Swd1/18e
>>732
常識って人それぞれだからなあ...
エラー終了して使用者に丸投げするか、どこまでリトライするか、
ウエイトするのかリトライするのかはプログラムの次第だし...

今回の件のように、直前に誰かがお触りしてるのが
確実なのであれば、リトライするかウエイト入れるのが
確実だと思うよ。
736デフォルトの名無しさん
垢版 |
2021/08/21(土) 10:35:42.11ID:+K/WXdke
>>724
closeしてないやん?
737デフォルトの名無しさん
垢版 |
2021/08/21(土) 10:38:21.22ID:+K/WXdke
>>731
CreateFile したハンドルを FILE * に変換したら fgets 使えるが
738デフォルトの名無しさん
垢版 |
2021/08/21(土) 10:40:30.17ID:+K/WXdke
>>732
>Windowsプログラミングにおいて、ファイルの削除や移動についてはその後ウェイトを挟むか、
>ファイルの作成でエラーが出たらリトライを入れるというのは常識的なものなのでしょうか?

根本的な思い違いをしているに一票
2021/08/21(土) 11:38:33.02ID:ssXITtrX
>>736
>>724がfcloseしていないというならそもそもfopenしただけとも言えるわけで説明のために以降は省いているってわかると思うんだが
そもそもが閉じ忘れならMoveFileも失敗するだろう
2021/08/21(土) 12:28:01.97ID:FhcAlSkM
>>737
せやな

_osfhandleとかfdopenをキーワードにggr
2021/08/21(土) 12:54:10.92ID:JKiZ0yss
そこまでせんでもcreatefileしたハンドルで移動してから一旦閉じてfopenでよくね?
2021/08/21(土) 14:27:27.29
再現できる簡単なソースは公開可能ですか?
2021/08/21(土) 21:53:40.08ID:dwXwyCwb
>>741
今回の問題は、いったん閉じてもカーネルが握ってるのでfopen()できないって話で
2021/08/22(日) 12:32:08.06ID:fq28dqqO
>>743
だからMoveFileを代替しても同じやんって話で
2021/08/22(日) 14:46:53.71ID:HtdC9XOd
MoveFileEx「あのっ」
2021/08/22(日) 16:25:47.23ID:44Fq7Iy0
論理的に考えれば「カーネル」が
握るわけ無いだろう。
ゴルフか麻雀でもしているののか
2021/08/22(日) 16:40:10.74ID:oA0Vr62Q
ロクに質問読まずにというか理解せずにレスしてる馬鹿は何なの
2021/08/22(日) 17:05:53.52ID:kaETDw8p
747の同類かと
2021/08/22(日) 18:03:47.50ID:3exyu3cG
>>732
環境依存なことを考えて戻り値確認するのは別にWindowsに限らないし、戻り値が正常でも外部デバイス相手だとドライバ次第なこともある
別件で、組み込みWindowsでユーザがアプリが正常終了してすぐに電源コード引っこ抜くから
キャッシュがHDDに書き込まれずに消えるって事例はあったな
2021/08/23(月) 07:47:18.19ID:klNpYQV6
>>749
NAS関係でOK出ているのに書き込まれて
いないってのはあったな
751デフォルトの名無しさん
垢版 |
2021/08/25(水) 19:50:31.67ID:s4bO6YKI
LoadLibraryとかGetProcAddressしたものは
必ずFreeLibraryしないといけませんか?
自分のプロセスが必ず終了するときにFreeLibraryせずに放置しても勝手に解放される?
2021/08/25(水) 20:26:18.34ID:TCNLfe6z
>>75
されるわけないだろ
OSがナイナイしてくれるだけ
2021/08/25(水) 21:58:54.28ID:ENQvEefU
>>751
プロセスごと始末してくれるから放置で構わん
2021/08/26(木) 05:00:21.78ID:znb4Cn9C
変な日本語・・・
755デフォルトの名無しさん
垢版 |
2021/08/26(木) 16:28:52.50ID:WPRv8+9f
こっちくんな
756デフォルトの名無しさん
垢版 |
2021/08/26(木) 17:50:13.63ID:DS5buh7a
やって来ました
メッセージボックスで「計算結果はXX」って表示したくて

1 LPCWSTR func() {LPCWSTR a = L"//計算結果の値"; return a;} //計算結果を文字列にして返す関数
2 //以下WinMain()内
3 LPCWSTR a = L"計算結果は";
4 LPCWSTR b = func();
5 LPCWSTR c = 文字列を連結する関数(a, b); //StringCchCatW(), lstrcatW()などを試したがだめだった
6 MessageBoxW(hWnd, c, L"タイトルバー", MB_OK);

と書いたが動かなかった・・・
まず、1行目の「L"//計算結果の値"」に計算結果の変数を入れる方法がわからない
そして、5行目のLPCWSTR型の文字列を連結する方法がわからなからない
一日の大半がエラーとのにらめっこに費やされて辛い・・・
頼む、手伝ってくれさい
2021/08/26(木) 17:58:52.10ID:+hQVnBsv
宿題スレ案件ですか?
758デフォルトの名無しさん
垢版 |
2021/08/26(木) 18:24:36.40ID:DS5buh7a
>>757
いや普通にニート
2021/08/26(木) 18:27:20.48ID:56nPMNqk
>>756
Win32APIではなくC言語の文字列とポインタの違いを勉強するところからやり直し
2021/08/26(木) 18:29:12.42ID:iCFmJ4nN
wsprintf
2021/08/26(木) 19:08:13.70ID:Dr81uOON
ニートならできないことは諦めればいいんじゃね?
2021/08/26(木) 19:18:34.62ID:s9ncfwmd
>>756

1 void func(CString &str) { str = "計算結果の値" } //計算結果を参照型引数の str に返す関数
2 //以下WinMain()内
3 CString str1 = "計算結果は";
4 CString strKekka;
5 func( strKekka ); // strKekka に計算結果の文字列が入って返って来る。
6 CString str2 = str1 + strKekka;
7 str2 を wide 文字列に直して、wpszText に入れる。 // ここはやり方を調べる。
8 MessageBoxW(hWnd, wpszText, L"タイトルバー", MB_OK);
2021/08/26(木) 19:19:53.55ID:WgbRBOxo
>>756
自分がどう書いたのかソースそのまま出して
764デフォルトの名無しさん
垢版 |
2021/08/26(木) 19:21:59.37ID:ltVuiEkY
普通にwstringベースで作れ。
win32のwchar_t*型渡すところで、data()やc_str()使え。

std::to_wstring で数値などなどメジャーな数値型はwstringになる。

最初はwin32の型に代替名つけまくりな文化は
一体なんの型だよって感じで戸惑うわな。
765デフォルトの名無しさん
垢版 |
2021/08/26(木) 19:22:39.20ID:s9ncfwmd
>>762
以下の関数を使えば、7 は、
wchar_t *wpszText = ConvertAcpMbcsToUtf16(str2);
でいける。

wchar_t *ConvertAcpMbcsToUtf16( const char *pszStr )
{
  // ワイド文字列(UTF16, unicode) へ変換後の文字列長を得る
  int      lenUnicode  = MultiByteToWideChar( CP_THREAD_ACP, 0, pszStr, -1, NULL, 0 );
  
  // 必要な分だけ ワイド文字列(UTF16, unicode) のバッファを確保
  wchar_t    *pbufUnicode    = new wchar_t [lenUnicode];
  if ( pbufUnicode == NULL ) {
    return  NULL;
  }
  
  // デフォルトコードページ(ShiftJISなど) から ワイド文字列(UTF16, unicode) へ変換する :
  MultiByteToWideChar( CP_THREAD_ACP, 0, pszStr, -1, pbufUnicode, lenUnicode );
  
  return  pbufUnicode;
2021/08/26(木) 19:24:55.54ID:s9ncfwmd
>>765
訂正:
1. は代入文の最後にセミコロンが抜けていたので正しくはこう :
void func(CString &str) { str = "計算結果の値"; }
2021/08/26(木) 19:30:35.44ID:s9ncfwmd
おっと、最後、MessageBoxW ではなく、MessageBoxA を使っていれば、
7や >>765 の工程は不要で、
MessageBoxA(hWnd, str2, "タイトルバー", MB_OK);
だけでいける。
2021/08/26(木) 19:32:37.80ID:s9ncfwmd
なのでまとめると以下のようになる :

void func(CString &str) { str = "計算結果の値"; }

// 以下WinMain()内
CString strKekka;
func( strKekka ); // strKekka に計算結果の文字列が入って返って来る。
CString str2 = CString("計算結果は") + strKekka;
MessageBoxA(hWnd, str2, "タイトルバー", MB_OK);
2021/08/26(木) 22:24:23.76ID:OnjvrKFf
連結はstrcatかsprintf("%s%s", s1, s2 )のTCHAR(wchar_t)版でいけるやろ
あとLPCWSTRはポインタなので、ちゃんと割り当てしてなくて未初期化のままとかないだろうな?
2021/08/27(金) 02:18:22.79ID:PcAf749w
LPCWSTRのCはCONST(定数)という意味だから、変更できない。WはWide、つまりUTF-16.
Win32をやる前にC言語の文字列処理をマスターしてくれ。
wsprintfは時代遅れ。バッファオーバーフローを避けるため、バッファサイズ指定できる<strsafe.h>のStringCch...関数群を推奨。
2021/08/27(金) 02:34:26.66ID:PcAf749w
ポインタ変数は実体を持たない。文字列扱うにはバッファが必要。動的にバッファを確保して楽したいなら、標準C++のstd::wstringか、MFC/WTLのCStringWを使う。
ただし、std::wstringを使う場合でC文字列が欲しい場合はc_str()メソッドを使う必要がある。下手な型キャストはケガのもと。
2021/08/27(金) 07:26:15.44ID:4k6BS6Dx
WindowsでC/C++を学ぼうとすると、文字列の扱いは混乱するだろうね
OSを特定しない教科書に載ってるようなやり方もできるから心配するな
一応の結果の表示をできるようになったら、とりあえずその方法だけ使って次に進んで、一通り理解したらまた文字列処理に戻ってくるといいんじゃないかな
773デフォルトの名無しさん
垢版 |
2021/08/27(金) 07:43:07.26ID:bixNKZnz
ぎゃー
教えてくれたのに遅れてすまん
今からエディター起動する
2021/08/27(金) 08:37:51.16ID:lOnGsJ7M
スレタイ読もうな?
2021/08/27(金) 10:35:04.22ID:Zo8CY4eq
>>770-771
この段階の人には情報過多
2021/08/27(金) 10:43:55.91ID:BFKMFKNN
C言語の基礎からやり直せ、と助言するのが正しい
777デフォルトの名無しさん
垢版 |
2021/08/27(金) 11:25:56.35ID:bixNKZnz
付き合ってくれた人が多くて感謝!
上のコードで実験しながら知識の掘り下げも含めて少し調べてみる
ありがとうな
いつか立派なプログラマーになってこのスレで恩返しするわ(泣ける)

>>774
文字列の扱いがここまで面倒だとは思ってなかった
Windows APIの関数に適当に投げ込むだけだと思ってた

>>776
入門書は読んだだけで実作は先週始めた
(これ以上は理解が進まないので実作をすることにした)
まだ知識が実践で使えるように修正されてない状態
まあ知識もないんだが
778デフォルトの名無しさん
垢版 |
2021/08/27(金) 11:59:25.59ID:Ti/YAON1
お前には完成する能力は無い
2021/08/27(金) 12:35:37.97ID:S83DaDnk
先が思いやられるな
特にWin32APIにこだわる理由が無いならC#でやることをおすすめする
2021/08/27(金) 18:42:32.62ID:v1ag2e+a
特殊な理由でもない限りネイティブc/c++なんて使わんでいいよ
2021/08/27(金) 19:44:48.26ID:ykQTaA3x
Cだと、こんな感じかな
- - - - - - - - - - - - - - - -
LPCTSTR a;
int b;
TCHAR c[20];

a = TEXT("計算結果は");
b = 2;
wsprintf(c, TEXT("%s%d"), a,b);
MessageBox(NULL, c, TEXT("タイトルバー"), MB_OK);
2021/08/27(金) 20:04:56.02ID:v1ag2e+a
今でもTEXT()って要るの?
2021/08/27(金) 20:22:50.96ID:S83DaDnk
なんでせっかくTCHAR使っててwsprintfやねん
2021/08/27(金) 20:24:35.54ID:EK7jPK8d
MBCSかUNICODE決め打ちならいらない
LPCTSTR,TCHARも同じ
2021/08/27(金) 20:35:07.25ID:Zo8CY4eq
>>783
#ifdef UNICODE
#define wsprintf wsprintfW
#else
#define wsprintf wsprintfA
2021/08/27(金) 20:36:31.85ID:oI5nTqpL
>>783
wsprintfはTCHARでは
2021/08/27(金) 20:36:59.87ID:olVwmysy
>>785
>>760
2021/08/27(金) 20:42:31.64ID:Zo8CY4eq
?
2021/08/27(金) 20:45:13.11ID:PcAf749w
sprintf/swprintfはC標準。
wsprintfはWin32。
これはテストに出ないぞ!
2021/08/27(金) 20:48:57.74ID:olVwmysy
>>789
Win32apiのスレなので、それ以外の答えを
書いた奴全員アウトあるね
2021/08/27(金) 22:20:01.88ID:5zZ7szBm
>>786
TCHARはワイドとマルチバイトの両方なんだからwprintf決め打ちじゃなくて_tprintf
2021/08/27(金) 22:35:10.18ID:oI5nTqpL
>>791
wsprintfはTCHARでは
2021/08/27(金) 22:53:41.84ID:ykQTaA3x
>>782
これからWin32APIを理解し始めようと考えている人には、そうゆう疑問を持てるレベルにまで頑張って到達してほしいな、という思いでマクロ表記にしてみたよ。
実用上、必要か不要か・・・で言えば場合によるんだろうけど。
現時点でWin32API が内部で ANSI と UNICODE を明確に区別しているので、作法として気にする必要はあると思われます
2021/08/27(金) 23:06:30.48ID:5zZ7szBm
>>792
なんでだよw
wprintfはWCHAR
2021/08/27(金) 23:07:19.75ID:PcAf749w
_T系の関数マクロは<tchar.h>で定義されていて、主にC実行時関数を振り分ける。これらはAnsi/Wideを振り分けるTEXT系とは別に分離された機構になっている。
2021/08/27(金) 23:09:32.07ID:PcAf749w
>>794
wprintfはC標準のワイド関数。
wsprintfはWin32関数でA/W版がある。
一文字違いに注意。
2021/08/27(金) 23:18:41.05ID:PcAf749w
UNICODEマクロでA/Wの振り分け。
頭に下線のついた_UNICODEマクロで_T系の振り分けができる。
これらはVisual Studioで適切にソリューション/プロジェクトの設定を行えば自動で定義される。
GCCやclangでは-municode をコンパイルオプションに追加する。

ただし、ユニコードプロジェクトではWinMainはwWinMainに切り替わるので注意しよう。
2021/08/27(金) 23:22:46.33ID:PcAf749w
ユニコードプロジェクトにせず、代わりにUNCODEマクロと_UNCODEマクロを定義済みにするというやり方もある。こちらはCMakeでよく使う。
2021/08/27(金) 23:25:34.94ID:PcAf749w
ユニコードプロジェクトではないときにUnicode のコマンドラインを取得したい場合は、GetCommandLineWと
CommandLineToArgvWと
LocalFree を使う。
2021/08/27(金) 23:32:23.92ID:PcAf749w
ミッキマウスミッキマウスミッキミッキマウス
天安門事件
旭日旗☀
2021/08/28(土) 06:56:04.31ID:zdnaC7QB
,>>798
まぁ今となってはWindowsのUTF16LEはUNCO(ウンコ)なコードだったな
2バイト固定で1文字ってのは、簡易な多言語対応とstrlen系の文字数計算に楽だったんだろうけどそれだけだろ
2021/08/28(土) 08:30:55.56ID:UNt1DdTH
サロゲートペアに対応したので、その文字数計算も単純にできなくなってしまった。
文字数計算がややこしいのはUTF-8もそうなので、UTF16〜が全然ダメということではないが。

開発面では、将来的に UTF-16(IVS)が必要になってくると、UTF8でいいじゃん、ということになって。
Visual stduio のデフォルトが再度ANSI(UTF-8)に戻る可能性はある。
長い目でWin32APIを見るなら、ANSIアプリの構築方法も忘れないでおく必要はありそうだ
2021/08/28(土) 09:06:21.83ID:YWpKrN9v
アラビア語かなんか知らんが、サロゲートペアの問題ではなく、さらに
UTF32 では 2 文字(32BIT x 2) なのに、画面上では文字の上や下に斜線
が入るような文字がある。日本語の濁点のようなもの。サに点々を打ってザ
と書くようなのを、サ + ” みたいな二文字で表現するらしい。
そんなものまで日本人が対応しなくて良いと個人的には思ってる。
2021/08/28(土) 09:09:13.47ID:YWpKrN9v
UTF8 --> UTF16(サロゲートペア) --> UTF32 1 文字
の問題だけでなく、特殊な言語では、
UTF8 --> UTF32 2文字 --> 画面上では 1 文字
の問題が有るということ。
日本人が対応できるのは、UTF32 1文字が画面上で1文字に見えるまでが限界。
2021/08/28(土) 09:33:08.48ID:nCwHwokI
KPS 9566-2000にはフル対応しる
2021/08/28(土) 09:53:59.20ID:3VTMYlES
>>803
> サ + ” みたいな二文字で表現するらしい
Macってこれだよね
UTF-8-MACくたばれ
2021/08/28(土) 10:02:21.59ID:gw2R54kI
>>779
C#だっておバンバン
2021/08/28(土) 10:50:07.25ID:Wn50/Mou
>>794
勘違いしましたごめんなさいは?w
2021/08/28(土) 12:21:19.46ID:jkQHTYKd
>>803
>そんなものまで日本人が対応しなくて良いと個人的には思ってる。
欠けリンゴの世界ではそっち採用してるからファイル名の扱いとか厄介だよ
2021/08/28(土) 13:14:56.03ID:I3iUh714
>>801
MBCSのsjisとeucに戻りたいかというと、嫌かな(´・ω・`)
今の敵は絵文字
2021/08/28(土) 13:29:17.35ID:78cNf6mY
中東とアメリカは中が悪いから、わざと変な文字コードにしたのかも知れんな。
経済的な敵である日本を倒すため、オートリピートなんてそもそも不要なIMEのON/OFF
キーに普通のアルファベットキーよりも開始時間の短いオートリピート機能を付けた
上に、現在のON/OFF状態を画面の右下の分かりにくい場所に小さく表示したりとか
と同じで。
2021/08/28(土) 14:51:45.63
>>811
政治の世界と商売の世界は違いますよ、商売のためならなんでもするのが商売人というやつですよ
2021/08/28(土) 15:17:42.31ID:Wn50/Mou
そして悪徳へ
2021/08/28(土) 17:32:49.86ID:nCwHwokI
>>794
スレタイ3回音読してからごめんなさいは?
2021/08/28(土) 18:09:30.98
ワンワンワンごめんなさい
2021/08/29(日) 01:17:36.66ID:MsJ8kGio
どうでもいいけどオリパラのRPCはリモートプロシージャコールじゃなくてなんちゃってロシア
まめな
817デフォルトの名無しさん
垢版 |
2021/09/06(月) 20:30:01.34ID:d5h9Y6Qi
フフフフフ…で埋められたWin32アプリデバッグメモリを思い出した人、どのくらいいるかな

「フフフ…」4歳娘が撮影した花火に家族で爆笑! 見ると笑顔になる“奇跡の1枚”の状況を父親に聞いた | FNNプライムオンライン
https://www.fnn.jp/articles/-/224754
2021/09/06(月) 20:54:15.47ID:q0BBk2oV
0xABADBABE がwindows7のUSB
0xBAADF00D がlocal alloc

深淵に到達するとフフフじゃないのよ
819デフォルトの名無しさん
垢版 |
2021/09/09(木) 19:55:16.63ID:VcdPV4nP
カカカ
2021/09/10(金) 06:52:10.21ID:zxx6HeQ0
六歌仙のひとり
2021/09/10(金) 11:54:52.84ID:kc5oWHp5
Debugモードで実行すると配列の中身が「フフフノフフフ」になってワロタ
2021/09/10(金) 11:56:22.34ID:2Fxd4w67
16進数で表示して英語で読んでみ
2021/09/11(土) 21:33:34.97ID:x2ZLDQix
INT3
824デフォルトの名無しさん
垢版 |
2021/09/11(土) 23:15:17.42ID:EO9owr6G
dabadabada
2021/09/15(水) 09:50:59.74ID:5Dhe4KoF
HANDLE SetClipboardData(UINT uFormat, HANDLE hMem);
に渡すhMemは必ずGlobalAllocで確保したものでなくてはいけないのでしょうか?

mallocやnewやスタック領域のポインタを渡すとどうなるんでしょうか・・・?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況