Win32API質問箱 Build123©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/10/08(土) 12:33:02.29ID:0jaJMPXG
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
212185
垢版 |
2016/11/30(水) 19:24:20.97ID:NmhabroG
>>200に示したように、1回だけ実行すると、
実時間7msec、スレッドCPU時間14msecという不整合が起きます。

ところが10回実行して計ると、
実時間78msec、スレッドCPU時間80msecとなります。

これでも不整合はあるものの、
実時間≒スレッドCPU時間であることから、
1回の場合でも実時間≒スレッドCPU時間であることが想定される。
また実時間の方がより信頼できることが分かっている。
したがって、1回実行時のスレッドCPU時間は7.8msec程度であろう。

このようなスレッドCPU時間の見積もり方で妥当でしょうか。
213デフォルトの名無しさん
垢版 |
2016/11/30(水) 20:49:07.15ID:5wEUj1of
>>212
GetThreadTimesの精度は15.6msなので、ある程度時間のかかる処理でないと
意味が無い。7msの処理をはかると0か15になるかのどちらか。
数百回の平均をとるのではなく1回だけ測定してみると意味ないのがわかる。
214デフォルトの名無しさん
垢版 |
2016/11/30(水) 20:49:57.04ID:o1dhiyLy
.
.
■■人間性に批判殺到 あの悪質パクツイ垢 @copy__writing の管理人は東京都三鷹市の莉里子■■
http://i.imgur.com/5qAgsHG.png
http://i.imgur.com/kldi84l.png
http://i.imgur.com/8vCymiC.jpg


■今までのプライベート垢
@riricoco0
@bibliophilia333
@muzimuzi333
@nekomatagensou
@hanasoraumimori
@mirainosekai3
@zibanyan666
@parlorchild
@liliririko
@EriotN
@mike_peko
@riricoco0
@ririko_neko
@nyanpas ※1
@telegraphyneko


@riricatputi (新アカ)  http://imgur.com/a/X1vQA


100垢以上作ってるキチガイ出会い厨 (粘着やめろ詐欺師!はやく捕まれホラ吹きネットストーカー犯罪者!!)
215185
垢版 |
2016/11/30(水) 22:05:18.43ID:b9TNuS14
>>212の方法でスレッドCPU時間を見積もって報告し、帰宅しました。
ID変わります。

>>213
クロック更新粒度に基づく精度のことは認識しています(>>185>>187)。
500回の平均を取ることでその問題を回避し、
その上で>>200>>206の結果になります。

>>206のデータは、
1回目で実時間を大きく上回るCPU時間が記録されており、
2回目で殆どCPU時間が経過していないことを表しています。
GetThreadTimes()で取得したクロックは、どうしてこのようになってしまうのか。
それが分からないんです。

どういう場合にこうなり得るのか、御存知の方は教えて下さい。
216デフォルトの名無しさん
垢版 |
2016/11/30(水) 23:20:53.03ID:EvMIugyq
1回目はいろいろオーバーヘッドあるよね
217185
垢版 |
2016/11/30(水) 23:52:18.25ID:b9TNuS14
>>216
ですと、実時間を超えるCPU時間になり得ると?
プロセスCPU時間ではなくスレッドCPU時間で。
同じ処理なのに2回目が1回目の6%のCPU時間で妥当だと?

メモリアクセスのキャッシュヒット率に違いがあるとか
そういうことであれば分かります。
でも、CPU時間ですよ。
CPU時間で圧倒的に2回目が有利でしょうか?
だとしても、
実時間の2倍近いスレッドCPU時間って何なのでしょうか?

不思議だらけで、困惑しております。
2016/11/30(水) 23:54:22.80ID:R/TXkRDp
>>217
先ずその測定方法では誤差が偏り問題を回避できなかったという事実を認めろ
500回繰り替えして全体の時間を500で割るなら誤差を縮小出来るが
一回分の時間を積み上げたところで誤差も同じように積み上がったということだろ

一回分の時間を積算して精度の問題を解消するには測定開始時刻が
tick周期に対して完全に自由でなければならないのでは?
どんな測定方法をしたのか分からないけどプログラムの起動やスレッド生成や
スケジューリングのスイッチなどがtickと相関関係にあれば破綻する方法だったんだろ
219デフォルトの名無しさん
垢版 |
2016/11/30(水) 23:55:15.34ID:nOqMl3Nb
>>215
GetThreadTimesが切り捨てなのか切り上げなのか、平均をとればうまい具合になるのか
あなたの環境で要確認。
206-Aは精度的にあり得るが、Bは異様に少なすぎるので、測定ミスを疑われるレベルですね。
コードを見ないとなんとも言えないですが、対象部分を適当な計算をするループに
変えても起こるんでしょうか?
2016/12/01(木) 00:37:40.42ID:cvCPUZP4
みんな憶測で偉そうに話すしかできないんだから、再現コード上げたらいいだけやん
221デフォルトの名無しさん
垢版 |
2016/12/01(木) 00:49:48.35ID:O5qZU2qd
GetThreadTimes,つまりスレッドを作っているんだろ
1回目と2回目以降で違って当然じゃねぇ?
222デフォルトの名無しさん
垢版 |
2016/12/01(木) 00:54:41.76ID:O5qZU2qd
クロックカウンタ使えよ
2016/12/01(木) 02:56:36.59ID:wMlr02vN
CPUがいくら速くても切り替えは60Hzくらい
224デフォルトの名無しさん
垢版 |
2016/12/01(木) 04:56:48.70ID:O5qZU2qd
スタック生成だけ考えても1回目と2回目以降で違ってくると思う
225185
垢版 |
2016/12/01(木) 11:21:31.25ID:SFr2s2fw
>>218
第一段落はやり方が悪いというご批判だと思いますが、
ティックが粗いことによる誤差は平均で軽減しました。
その上で誤差が起こっています。
ティックが粗いこと以外の理由で誤差が起こっています。
その理由を知りたく、知恵を拝借したいのです。
間違っていないと思います。

第二段落第一文は、おっしゃる通りです。
第二段落第二文は、思いつきのご発言でしょうか、
それとも知識や経験に基づく助言でしょうか。
後者であれば、もうちょっと詳しくお願いします。
>>206のようなコードで起こりうるでしょうか。
226185
垢版 |
2016/12/01(木) 11:39:04.09ID:SFr2s2fw
>>220
職業プログラマなので実際のコードを公開することはできませんが、大よそ以下のようなものです。
========ここから========
tRealA=0;
tRealB=0;
tUserA=0;
tUserB=0;
for (int i=0; i<500; ++i){
いろいろ
tReal1=timeGetTime();
GetThreadTimes(...,&tUser1);
func(...); //A
tReal2=timeGetTime();
GetThreadTimes(...,&tUser2);
func(...); //B
tReal3=timeGetTime();
GetThreadTimes(...,&tUser3);
いろいろ
tRealA += tReal2-tReal1;
tRealB += tReal3-tReal2;
tUserA += tUser2-tUser1;
tUserB += tUser3-tUser2;
}
tRealA/=500;
tRealB/=500;
tUserA/=500;
tUserB/=500;
========ここまで========
>>219
func()がvolatile intをひたすらインクリメントするコードの場合は、期待通りの結果>>192がでます。しかし、func()を目的のコード(他者製ライブラリの関数)にすると、不自然な結果>>206になります。
>>216>>224
AとBで何がそんなに変わるでしょうか。
2016/12/01(木) 11:55:52.25ID:lOA8D/0g
最適化切ったら
228デフォルトの名無しさん
垢版 |
2016/12/01(木) 12:02:28.97ID:5zfWITAP
木屋さん元気かな
事故ったのは知ってるけど
どのくらいご回復されたかな
2016/12/01(木) 12:14:25.23ID:i7gsdi/t
>>225
> 第二段落第一文は、おっしゃる通りです。
> 第二段落第二文は、思いつきのご発言でしょうか、

思いつきと言われればその通りだが、確からしい事(あなたの測定結果)
から推測された事(第二段落第一文の条件が満たされていない)です


>>226
> func()がvolatile intをひたすらインクリメントするコードの場合は、期待通りの結果>>192がでます。しかし、func()を目的のコード(他者製ライブラリの関数)にすると、不自然な結果>>206になります。

それはfunc()の一回の時間が桁違いだから誤差に埋もれるか埋もれないかが変わっただけだろ
230185
垢版 |
2016/12/01(木) 13:04:50.94ID:SFr2s2fw
>>227
コンパイラの最適化のことですよね。
コンパイラの最適化を無効にして、やってみました。

A
timeGetTime()による時間:7msec
カーネルモード時間:499usec
ユーザモード時間:14882usec

B
timeGetTime()による時間:7msec
カーネルモード時間:31usec
ユーザモード時間:124usec

同じ傾向になりました。
231デフォルトの名無しさん
垢版 |
2016/12/01(木) 13:30:33.53ID:O5qZU2qd
>>226
> >>216>>224
> AとBで何がそんなに変わるでしょうか。

スタックは初期化されてアプリに引き渡すだろ
スタックの中で使われずに解放されたページは論理アドレスでは解放状態でも
OSがリザーブしておけば新たなスレッド生成で使い回しできるじゃないかな

他にもスタック以外でページの最初に書き込み時点でページをコピーするとかあるよね
232デフォルトの名無しさん
垢版 |
2016/12/01(木) 13:34:44.58ID:RgG4Eqmg
>>226
いろいろ のところでライブラリの初期化とかやってない?
1回目はデータ構築処理があるのでCPUタイムを食うが、2回目は不要なのでCPUタイムを食わないとか。
で、DBとかサーバーへの問い合わせがあるので、7msくらいはかかってしまうなんてことは無いのか。

あるいは、2回目はfuncの中で別スレッドを起動して計算しているので、元スレッドのCPUタイムは食わないとか。

A B だけでなく A B C D と4回くらいやっても同じ傾向か、平均でなくすべてのタイムを見て
極端にばらつく値がないか調べるとかも必要では?
2016/12/01(木) 22:49:24.47ID:/t7qmsTu
>>226
後だし感すごいな。
他者製ライブラリとやらの中身も分からず議論になるかってーの。
2016/12/02(金) 08:27:00.87ID:GvPbDV6s
どこがWin32APIの話なんだよ、ってことになるよなあ。
長々と議論に付き合ってた方々、お疲れ様。
2016/12/02(金) 09:07:26.76ID:0vMtCyDD
粒度の平均化してるとか言って全く出来てないし
精度の悪い数字を正しいと断定してるし
しかも間違ってる
何度も指摘してるのに正そうとしない
全部ダメでしょ。
2016/12/02(金) 09:21:55.13ID:+ocxhyeH
>>211みたいな事言ってるからお察し
237185
垢版 |
2016/12/02(金) 10:43:58.72ID:H1x5ETqP
報告書は突っ返されたので、まだまだ続きそうです。

まず、大大大前提を確認したいのですが、
GetThreadTimes()で取得するCPU時間は
スレッドがCPUをとっている時間で、
一つのスレッドが同時に複数のコアを占有することはないので、
(精度云々ではなく定義上は)スレッドのCPU時間は実時間以下である(以下のペースで進む)。

これは、大前提としてあってますよね?
2016/12/02(金) 10:47:04.34ID:rEQGNTwO
なんだ学校の課題だったのか
2016/12/02(金) 11:24:10.48ID:EDk65fqO
質問者より賢い人はいないのか?
これでは、質問箱が成り立たないなw
2016/12/02(金) 11:27:08.99ID:+ocxhyeH
>>239
そうだな
じゃあ頼んだ
2016/12/02(金) 11:48:56.99ID:2Jj/uLxs
だから再現できるサンプルをサクッと上げろよ。
だれも実物や社外ライブラリまで上げろといってないんだわ。
コーディングやデバッグ能力以外の能力が大きく欠如してるだろ。
242185
垢版 |
2016/12/02(金) 11:58:27.27ID:H1x5ETqP
10回やってみました。
つまり、>>226のコードでAとBだけでなく、AからJまでやってみました。

A
timeGetTime()による時間:7msec
カーネルモード時間:1092usec
ユーザモード時間:14133usec
B
timeGetTime()による時間:7msec
カーネルモード時間:249usec
ユーザモード時間:343usec
C
timeGetTime()による時間:7msec
カーネルモード時間:936usec
ユーザモード時間:9141usec
D
timeGetTime()による時間:7msec
カーネルモード時間:1372usec
ユーザモード時間:4180usec
E
timeGetTime()による時間:7msec
カーネルモード時間:561usec
ユーザモード時間:6583usec
F
timeGetTime()による時間:7msec
カーネルモード時間:717usec
ユーザモード時間:7737usec
G
timeGetTime()による時間:7msec
カーネルモード時間:468usec
ユーザモード時間:4773usec
243185
垢版 |
2016/12/02(金) 11:58:51.26ID:H1x5ETqP
H
timeGetTime()による時間:7msec
カーネルモード時間:655usec
ユーザモード時間:9672usec
I
timeGetTime()による時間:7msec
カーネルモード時間:218usec
ユーザモード時間:4149usec
J
timeGetTime()による時間:7msec
カーネルモード時間:405usec
ユーザモード時間:10795usec
全体(A〜J)
timeGetTime()による時間:74msec
カーネルモード時間:6645usec
ユーザモード時間:71510usec
2016/12/02(金) 12:10:39.48ID:fHtgnGrJ
仕事が出来ないから、タダで手取り足取り協力してくれってか
245185
垢版 |
2016/12/02(金) 13:02:57.14ID:H1x5ETqP
本件、私としては以下の結論に至りました。

○timeGetTime()は信頼できる。
○GetThreadTime()は信用できない
 (ティック間切り上げ的な傾向あり。理由不明。)。
○timeGetTime()を基準に>>212のような方法をとるほかない。

もう一度GetThreadTime()はどうしても信用ならず、
他に有用な代替手段もないため、
>>212の方法が限界である旨を報告することにします。

何人かの真剣に助言して下さった方々、
本当にありがとうございました。
2016/12/02(金) 13:27:24.15ID:bjzW9gj9
>>228
ドラスレの木屋さんも、timeGetTimeのこと調べてたな
247デフォルトの名無しさん
垢版 |
2016/12/02(金) 14:04:58.11ID:ELslSS33
timeGetTimeやめてQueryPerformanceCounterを使ったら?
2016/12/02(金) 14:15:28.80ID:ocojT6FV
内容のアホさからして
オバケじゃないことは確実
2016/12/02(金) 14:17:49.26ID:6Vgvdyao
あらかじめtimeBeginPeriodも呼んでおかないと精度変わる
250デフォルトの名無しさん
垢版 |
2016/12/02(金) 14:21:54.01ID:ELslSS33
静的領域に書き込みすると、コピーオンライトが発生し、
動的領域を確保すると、最初とおよび足りない時はOSで確保と初期化があると思う
それが1回目が遅い理由な気がする
2016/12/02(金) 14:30:05.73ID:LG3SGwVv
質問者はアレだが
それはそうと、どうでも良いことをいうのはやめたほうが良いだろう
実時間とスレッド時間が食い違うって話だから
1回目が遅いとかそういう話ではない
252デフォルトの名無しさん
垢版 |
2016/12/02(金) 17:49:56.46ID:EDk65fqO
結局>>237すら教えてあげなかったんだな。
2016/12/02(金) 18:15:57.54ID:2Jj/uLxs
質問者のアプローチや解釈が正しいのかが分からないのに、憶測で質問者回答者とも上から目線で
やりあってる状況にまず疑問を抱いた方がいい。
そしてそれら以下の書き込みしかできないID:EDk65fqOはクソ中のクソだと認識した方がいい。
2016/12/02(金) 22:19:54.42ID:rH7Be8WN
最初からGetThreadTimesは約1/64秒の精度しか無いって分かっていたはずなのにね。
平均とっても意味がないってことが改めて分かったことだけが成果か。
2016/12/02(金) 23:51:36.19ID:DveiiCO5
>>247とか>>249とか、全然関係ないことじゃん。
2016/12/03(土) 10:51:33.05ID:YdYTZThj
OSがどうやってカーネルモードやユーザーモードの時間を計測しているのか想像できないのかねえ
オーバーヘッドが高いやり方は採用できないと分かりそうなもんだが
2016/12/03(土) 11:08:29.93ID:JHScEEfz
触発されてGetThreadTimes=NtQueryInformationThread調べたんだけど”スレッド”の中身が興味深かった
質問者糞だから詳細は書かないがw
2016/12/03(土) 20:00:37.46ID:6jC0i+kE
俺もほんとはGetThreadTimesの特性知ってるけど、
質問者が土下座しないと教えてやらねぇw
2016/12/03(土) 20:35:28.76ID:xp0AwakX
GO
2016/12/03(土) 20:36:25.77ID:xp0AwakX
the old new thing
2016/12/04(日) 11:31:12.68ID:8oIVw/6i
Windows10ってCOMポート番号は最大何番までなんでしょうか?
2016/12/04(日) 11:37:47.55ID:NE4G8kum
com1〜com256まで
2016/12/04(日) 12:08:20.93ID:HYzaL+1F
昔、レジストリから認識してるポート名を取得するサンプルあったな。
MSDNだったかな
2016/12/04(日) 12:22:02.41ID:SxgHpTya
select欲しい
265261
垢版 |
2016/12/04(日) 16:50:15.73ID:8oIVw/6i
>>262
>>263
ありがとうございました!
266デフォルトの名無しさん
垢版 |
2016/12/09(金) 00:46:48.41ID:WzSsU1Dc
WM_CHARでWPARAMに入ってくるコード一覧どっかない?
普通のキーならそのままだが、Back SpaceとかCtrl+Vとかのコードが知りたい。
2016/12/09(金) 01:04:26.73ID:IirsZJ4E
>>266
キーが押されてるかどうかの確認は、WM_KEYDOWNを使う。
「仮想キーコード一覧」で検索。
ただし、Ctrl,Shift,Altはmodifiersと呼ばれ、特別扱い。CtrlとShiftは
GetKeyState(VK_SHIFT) < 0
GetKeyState(VK_CONTROL) < 0
で確認でき、AltはWM_NCKEYDOWNで確認できる。
2016/12/09(金) 01:07:15.74ID:IirsZJ4E
訂正。
× AltはWM_NCKEYDOWNで確認できる。
○ AltはWM_SYSKEYDOWNで確認できる。
2016/12/12(月) 20:09:14.26ID:UWkfYPy/
プログラム実行中のログテキストをエディットコントロールに出力しようと思ったのですが、
32KB制限があり実用できないことが分かりました。

リッチエディットではそのような制限はないようなので、
特に問題なければこれでいこうかと考えているのですが、
他に良い方法があればご教示ください。
2016/12/12(月) 20:14:54.27ID:cpVlzpwx
>>269
つ AllocConsole
2016/12/12(月) 20:17:01.65ID:dREO/TsY
EM_SETLIMITTEXT
272269
垢版 |
2016/12/12(月) 20:41:35.46ID:UWkfYPy/
>>270
ありがとうございます。
今回は検索機能とかも付けたいので、エディット系コントロールを利用することにします。

>>271
ありがとうございます。
これで通常のエディットコントロールで32KB以上を扱えます。
助かりました!
2016/12/13(火) 09:08:32.63ID:GC6m09wL
>>272
検索が必要ならリッチエディット
274269
垢版 |
2016/12/13(火) 21:50:24.46ID:EhPW3kvE
>>273
リッチエディットで実装を進めていて、あとは検索機能だけ、というところまで作れたんですが、
まさかリッチエディット自体に検索機能があったとは・・・!
ここでお聞きしてよかったです。
ありがとうございました!
275デフォルトの名無しさん
垢版 |
2016/12/19(月) 05:43:50.59ID:qsdLnaaR
paint.netのツールウィンドウみたいなやつってどうやって表示するの?
ウィンドウスタイルを色々試してみたけどあれと同じようなウィンドウが出ない。
2016/12/19(月) 07:17:38.33ID:jpBVYjvn
拡張ウィンドウスタイル使え。
2016/12/19(月) 23:46:04.62ID:qsdLnaaR
>>276
ありがとう。
拡張スタイル使ってもやっぱり無理だ。
思い通りに動かない。
数年前からずっと謎なんだよなこれ。
動作上問題が少ないから我慢してたんだけども。

それっぽいウインドウは出るものの、paint.netのように全ウインドウがアクティブ状態にならない。
【参考画像】http://news.softpedia.com/images/extra/WINDOWS3/large/paint.net/paint.net%20interface.jpg
paint.netを実際に使ってるとよく分かるんだが、
参考画像のようにメインのウインドウもツール用のウインドウも常にアクティブな状態が維持される。
しかし、拡張スタイルでWS_EX_TOOLWINDOWを指定してもアクティブなウインドウは常に1つ。
メインのウインドウをクリックすればツール用ウインドウは非アクティブになり、
ツール用ウインドウをクリックすればメインウインドウは非アクティブになる。
非常に気持ちが悪い。
確かにWS_EX_TOOLWINDOWを利用すればメインウインドウより常に前面になり、
タスクバーにも表示されず、非常にpaint.netのツールウインドウと似たような挙動になるが、
このアクティブ/非アクティブに関しては挙動が全く違う。
ちなみにアクティブ/非アクティブの判断はタイトルバーの色で判断している。
さらに参考画像のツールウインドウのような右上の正方形の閉じるボタンの表示のさせかたも分からない。

・・・と思ったら出てきたわ。
http://www.catch22.net/tuts/docking-toolbars-part-1

やっと出てきた。
WS_EX_TOOLWINDOWで検索してもノイズが多くてなかなか出てこなかった。
(ノイズ = MSDNのウインドウスタイルの一覧をコピペしただけのゴミサイト)
ノイズゴミサイトマジで迷惑。
嫌がらせでしかない。
2016/12/19(月) 23:50:28.70ID:qsdLnaaR
結局今回のカギはGoogle画像検索。
ふと「サンプル載せてるサイトの半数くらいはスクショも載せてるのではないか」と思い、
例の拡張スタイルで画像検索。
俺がやりたいのと同じ状況になってる画像を見つけて開いたらビンゴ。
画像検索なんて今まで思いもよらなかったよ。
文字検索するとノイズゴミサイトばかり出てきてどうにもならなかった。
2016/12/19(月) 23:52:55.75ID:qsdLnaaR
MSDNのコピペサイト作ってるゴミ共は早く死ねばいいのにな。
役に立たないどころか大迷惑。
最近流行りの質の低いキュレーションサイト()と同レベル。
2016/12/20(火) 00:02:24.24ID:tFkwVopE
>>275の意味がまったくわからなkったわww
2016/12/20(火) 06:12:08.47ID:ADGhogoA
google personal blocklistでかたっぱしからブロックしてる
xxxユーザー会もノイズ源だね
2016/12/20(火) 09:20:12.73ID:F0IdvAwo
顔写真ブロックは必須
おまえらキモ面なのに何故あんな目立つ場所に配置すんだ
283デフォルトの名無しさん
垢版 |
2016/12/20(火) 12:55:43.49ID:lAXr92yw
>>278
おめ
興奮は伝わったが
もちつけ
284デフォルトの名無しさん
垢版 |
2016/12/20(火) 13:00:10.44ID:lAXr92yw
>>279
はてぶのことですねわかります
2016/12/20(火) 16:58:42.80ID:WXAyO/1W
>>277
そういうときはいっそそのソフト解析したら?
Paint.NETなら簡単に逆コンパイルできるし、Spy++とか使うだけでもある程度わかる
2016/12/20(火) 17:33:10.55ID:Sq2CbWR0
OSSのソフトを逆コンパイルするの?
2016/12/20(火) 17:44:58.45ID:F0IdvAwo
今はちがうだろ
2016/12/20(火) 18:45:47.25ID:lAXr92yw
新手のアフィか
2016/12/20(火) 19:12:59.79ID:F0IdvAwo
アフィだったのかよ。新手すぎてアフィの影すら俺には見えん
290デフォルトの名無しさん
垢版 |
2016/12/20(火) 22:05:37.09ID:JPbALvOm
MSDNのコピペサイト全般のことだろう>アフィ
2016/12/21(水) 01:04:08.51ID:HCdO29Rc
質問
writefile関数を使用してint型で、データ保存ができません。同じ悩み持ったことある人いらっしゃいませんか。
2016/12/21(水) 01:09:18.76ID:GvkBvmPc
int Data = 123456;;
DWORD writeLen;
WriteFile(hFile,&Data,sizeof(Data),&writeLen,NULL);

こういうことだろ?
2016/12/21(水) 01:10:40.03ID:kLgQ2k1v
変数のアドレスをwritefileにわたさないとだめ。数値そのままわたしてるんでしょ
2016/12/21(水) 21:06:02.77ID:HCdO29Rc
>>292
>>293

ありがとうございます。引数としてアドレスを渡さないといけないのですね。試してみます!
2016/12/22(木) 08:34:56.43ID:tk15BRot
msdn 関数名
でググる癖をつけよう
296デフォルトの名無しさん
垢版 |
2016/12/22(木) 12:50:31.88ID:y+mdv7YD
-jp もお忘れなく
2016/12/22(木) 13:04:48.47ID:hYDEOt1H
どうしてこういう訳そのままずっと放置してんだろうな

> 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
> If the function fails, the return value is zero. To get extended error information, call GetLastError.
298デフォルトの名無しさん
垢版 |
2016/12/22(木) 18:24:16.26ID:zHNnrJEM
>>296
なんで付けるの?
誤訳トラップにハマりたいの?

俺は誤訳トラップどころか英語版と日本語版で引数違うトラップにハマったことがあるけども。
日本語版を穴が空くほど見て確認したけど何日経ってもコンパイルが通らず、
何の気なしに英語版開いたら引数の数が違って、
英語版見ながら修正したら一発でコンパイル通ったわ。
2016/12/22(木) 18:39:46.34ID:hYDEOt1H
>>298
+jp じゃなくて -jp
2016/12/22(木) 18:47:30.93ID:YVr1LIe6
>>298
今時どんな開発環境使ってるんだよ w
VisualStudio なら関数名 + '(' を入力した時点でプロトタイプが表示されるだろ
301デフォルトの名無しさん
垢版 |
2016/12/22(木) 18:55:29.30ID:zHNnrJEM
>>299
ごめんなさいwww

>>300
その当時はVector辺りで見つけてきた適当なテキストエディタとBCCだったよ。
2016/12/22(木) 19:02:14.56ID:tk15BRot
>>301
C言語を始めよう!
2016/12/22(木) 22:46:25.55ID:+nnZ9oR0
レポートタイプのリストビューをクリックしたら、その行のデータに対応する内容を
別の窓に詳細表示するというような動作をしているのですが、クリック時は NM_CLICK
を処理してクリックされた行を nmLv->iItem メンバを参照して知ることができます。

オペレーションとしてはマウスだけではなくキーボード操作でリストビューの選択行を
次々と移動させることも多いので、LVN_KEYDOWN も処理して上記と同様の動作を
させたいのですが、LVN_KEYDOWN 処理時は nmLv->iItem の中身が不定です。

LVN_KEYDOWN 処理時に ListView_GetNextItem で LVNI_ALL | LVNI_SELECTED を
指定して選択行を調べると、キーボードを押して選択行を変更する前の選択行が
得られてしまいます。

この辺は、一旦メッセージループを回すなどしてから現在の選択行を得ること自体は
可能と言えば可能なのですが、ここまでしないとダメなのかという疑問があります。

LVN_KEYDOWN 処理時、もしくはキーボード操作で選択行を変更した際、簡潔に
現在の選択行を得る方法はありますでしょうか?
2016/12/22(木) 23:02:45.31ID:hYDEOt1H
LVN_ITEMCHANGED
2016/12/23(金) 14:54:42.80ID:qGVMhgWM
質問です。

win10 x64

windows がキャッシュしてる dns の名前解決結果の一部を書き換えることは可能ですか?
または、名前解決の最中に結果をいじるようなフックは出来ませんか?

例えば、example.com の ttl を長めに書き換える、とかです。

よろしくお願いします。
2016/12/23(金) 15:00:49.80ID:3xdKhrkh
>>305
デバッグ特権があれば、別のプロセスのプロセスメモリーにアクセスすることも可能。
2016/12/23(金) 15:29:20.66ID:Kb3OsEli
対象アプリ限られてくるけどAPIフックすりゃ簡単に結果改竄はできるな
キャッシュ改竄はフィルタードライバあてる面倒なのしか思いつかない
2016/12/23(金) 15:36:22.73ID:5J5pLbD7
以下の処理を実装したく、助言をお願いします。

ダブルクリックや右クリ開くなどで、ファイルを開く際に
関連付けの有無に関わらず、そのファイルのパスを取得したい。

ShellProcあたりのフックかと考えましたが、パスをどうやって
調べるのか分かりません。

どうぞ宜しくお願いします。
2016/12/23(金) 15:54:43.63ID:Kb3OsEli
目的次第だがShellProcは違うんじゃないか
explorer.exeに対してShellExecuteあたりのフックか?
310デフォルトの名無しさん
垢版 |
2016/12/23(金) 15:59:09.98ID:5tPECy1o
>>305
proxy arp
311305
垢版 |
2016/12/23(金) 16:14:48.81ID:sqLqmtwC
>>305, 306

レスありがとうございます。
DLL注入やアタッチのよるDNS改ざんは確かにできそうですね。
検討してみます。

ちなみに、プロセスは基本的には chrome です。


>>307

できればフィルタードライバの設計を、おおざっぱでもいいので教えて頂けませんか?
(ドライバのコーディングは、ほぼ経験が無く、ネットワークそのものの知識はあるものの、windows内部での扱いやAPIはまったく知識が無いです)

ちなみに、VPNによる仮想アダプタと、複数のネットワークカード(アダプタ)があるのですが、それでも対応可能でしょうか?
(直感的には、特定アダプタに対するフィルターだと、アダプタの優先度に左右されそう。アダプタ依存にはしたくないです)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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