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/
Win32API質問箱 Build123©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/10/08(土) 12:33:02.29ID:0jaJMPXG
678デフォルトの名無しさん
2017/06/26(月) 05:22:59.28ID:PKYMbkgl >>677
THX もう少し研究してみます
THX もう少し研究してみます
679デフォルトの名無しさん
2017/06/26(月) 12:35:00.28ID:H+izVTcm XP風は好きじゃないので
2000風にしたいな
2000風にしたいな
680デフォルトの名無しさん
2017/06/26(月) 12:42:47.84ID:SXHfurBW >>675
MFCとかを使っていいのなら、そういうライブラリは売ってるけどな。
MFCとかを使っていいのなら、そういうライブラリは売ってるけどな。
681デフォルトの名無しさん
2017/06/27(火) 16:01:04.05ID:SkJ0mgKG682デフォルトの名無しさん
2017/06/27(火) 18:31:38.30ID:5NUjqPYf そういう話じゃないんじゃね
683デフォルトの名無しさん
2017/06/27(火) 18:49:42.58ID:ZZnYACXF 自分のアプリだけならオーナードロー
OS全部なら方法わからん
OS全部なら方法わからん
684デフォルトの名無しさん
2017/06/27(火) 22:00:01.81ID:EYZSSY+5 OS全体ならXP時代によくやってたtheme.dllの差し替えでいける・・・はずなんだが
XP時代でしか通用しない技なのかも知れんね
XP時代でしか通用しない技なのかも知れんね
685デフォルトの名無しさん
2017/06/27(火) 23:05:04.28ID:c8HyVbZT だってそれまんま脆弱性だし
686デフォルトの名無しさん
2017/06/28(水) 01:51:29.20ID:AXq98w3R なあに、グローバルフックすりゃなんとななるやろ(鼻ほじ
687デフォルトの名無しさん
2017/06/28(水) 05:06:05.09ID:7tvQPx7M なんとかなればそれも脆弱性だっていう
688デフォルトの名無しさん
2017/06/28(水) 06:37:49.26ID:RlkwH7vS 脆弱性って意味わかってんのかな・・・
689デフォルトの名無しさん
2017/06/28(水) 07:28:38.92ID:7tvQPx7M お前こそ
690デフォルトの名無しさん
2017/06/28(水) 10:07:49.00ID:bCVBq3sa MSのハンコ入りなら大丈夫
691デフォルトの名無しさん
2017/06/28(水) 10:45:09.51ID:dLzkw9+d どういうつもりでみんなGDI描画という言葉を使ってるのかわけわからんな
692デフォルトの名無しさん
2017/06/28(水) 14:01:52.20ID:MYEGHP5e GDI 描画と言えば FillRect とかの、HDC 用いるグラフィック描画で、
Windows 10 でも Windows 3.1 でも基本的に動作同じだよね。
Windows 10 でも Windows 3.1 でも基本的に動作同じだよね。
693デフォルトの名無しさん
2017/06/28(水) 14:02:36.67ID:MYEGHP5e ↑動作というか出力というか
694デフォルトの名無しさん
2017/06/28(水) 14:03:11.40ID:bCVBq3sa695デフォルトの名無しさん
2017/06/28(水) 14:14:49.61ID:PPOfwgdP そりゃ違うけど同じだよ
696デフォルトの名無しさん
2017/06/28(水) 14:27:13.10ID:NYSM+Urs ウィンドウシステムの動作は GDI では規定されていないだろ。
以上、異論は無視する。
以上、異論は無視する。
697デフォルトの名無しさん
2017/06/28(水) 16:20:30.66ID:DxMay05+ >>692 が考えてる範囲が(以下略)
698デフォルトの名無しさん
2017/06/28(水) 20:15:54.39ID:BLqcsHlp 矩形を塗りつぶすという意味の範囲では同じだな
699デフォルトの名無しさん
2017/06/28(水) 20:21:27.87ID:azrexzpP FillRectはuser32.dll
700デフォルトの名無しさん
2017/06/29(木) 05:23:51.54ID:RYKjplhO dwm.exe というデスクトップマネージャーのプロセスがGUI描画の番人になってるからXP再現は無理でしょ。
701デフォルトの名無しさん
2017/06/29(木) 06:47:05.22ID:LierOJHW xpからファイル持ってきてosにぶちこむのができないからって
>>675ができないというわけじゃない
>>675ができないというわけじゃない
702デフォルトの名無しさん
2017/06/30(金) 09:55:47.80ID:pDIkSJMf VM使えよ
703デフォルトの名無しさん
2017/06/30(金) 10:04:08.61ID:8lmMmyG2 Win10 SDK で作ると Windows 8.1 で動かないんだっけ?
704デフォルトの名無しさん
2017/06/30(金) 10:24:15.07ID:JfivK6eA 動くよ
705デフォルトの名無しさん
2017/07/01(土) 00:02:15.02ID:E7tKWa34 確かにそう書いてあるな
Windows 7 SP1 以降がターゲットなら Win10 SDK でいいのか。
https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk
Windows 7 SP1 以降がターゲットなら Win10 SDK でいいのか。
https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk
706デフォルトの名無しさん
2017/07/01(土) 00:55:09.30ID:SrP9qrPF Win10SDKにまだ手を出していないんだけど、ようするに
Platform SDK、Windows SDK と思っていいんだよね?
Platform SDK、Windows SDK と思っていいんだよね?
707デフォルトの名無しさん
2017/07/01(土) 02:14:37.92ID:3PhSHuZP >>706
Win10SDKは directX SDK が変な統合のされ方しててインクルード警告が沢山でる。実害はない。
Win10SDKは directX SDK が変な統合のされ方しててインクルード警告が沢山でる。実害はない。
708デフォルトの名無しさん
2017/07/03(月) 01:10:58.28ID:u//qTFEB http://fast-uploader.com/file/7054567135089/
ウインドウを表示するだけのC++コードなんですが
ウインドウを消して終了しようとするとアクセス違反の例外が発生します
誰か解決方法を教えてください
ウインドウを表示するだけのC++コードなんですが
ウインドウを消して終了しようとするとアクセス違反の例外が発生します
誰か解決方法を教えてください
709デフォルトの名無しさん
2017/07/03(月) 20:14:34.18ID:pLc9U1QI const WCHAR *className = L"MainWindow";
↓
static const WCHAR *className = L"MainWindow"; 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
↓
static const WCHAR *className = L"MainWindow"; 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
710デフォルトの名無しさん
2017/07/03(月) 22:00:50.05ID:QZMxmlWX >>708
WM_NCDESTROY だか WM_POSTNCDESTORY が来るまで
window のインスタンスを消しちゃいけなかったような
PostQuitMessage の前に DestroyWindow しておけば良かったような
WM_NCDESTROY だか WM_POSTNCDESTORY が来るまで
window のインスタンスを消しちゃいけなかったような
PostQuitMessage の前に DestroyWindow しておけば良かったような
711デフォルトの名無しさん
2017/07/04(火) 00:24:40.83ID:UJlaPfcf VS2017でそのままビルド実行してみたけど例外など発生せずに正常に終了した
何か条件とかあるのかね
何か条件とかあるのかね
712デフォルトの名無しさん
2017/07/04(火) 00:48:55.57ID:vYvTEYNl 708です
原因がわかりました
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/12b5bb0f-d2f1-470b-9b9b-39e3e834aa80/win32api?forum=vcgeneralja
ウイルスバスターが原因でした
許さんぞ
原因がわかりました
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/12b5bb0f-d2f1-470b-9b9b-39e3e834aa80/win32api?forum=vcgeneralja
ウイルスバスターが原因でした
許さんぞ
713デフォルトの名無しさん
2017/07/04(火) 02:04:52.19ID:XS8CaxP/ とはいえ、
「ウイルスバスターを利用されている場合はエラーが出ます」
ってわけにもいかないだろうからこの先面倒だね。
健闘をお祈りします。
「ウイルスバスターを利用されている場合はエラーが出ます」
ってわけにもいかないだろうからこの先面倒だね。
健闘をお祈りします。
714デフォルトの名無しさん
2017/07/04(火) 02:37:05.07ID:48gcNEwZ ウィルスバスター入れてても、その自作プログラム以外のソフトでは
そういう終了時に例外が出る問題は出ないんだよね?
とすると、そのプログラムが何かを踏んでるようにみえるけど
そういう終了時に例外が出る問題は出ないんだよね?
とすると、そのプログラムが何かを踏んでるようにみえるけど
715デフォルトの名無しさん
2017/07/04(火) 02:41:32.21ID:DygcEzqH 原因は >>710 で大方間違いないし
716デフォルトの名無しさん
2017/07/05(水) 10:54:07.33ID:Qpg00Afa717デフォルトの名無しさん
2017/07/05(水) 11:14:56.55ID:K9O/lDO5 GetMessageの戻り値が-1ならbreakもな
718デフォルトの名無しさん
2017/07/06(木) 14:11:37.94ID:eR2pXU0u ウイルスバスター側にしてみれば
DestroyWindow されてないのに SendMessage したら落ちたww
ということだろうな
DestroyWindow されてないのに SendMessage したら落ちたww
ということだろうな
719デフォルトの名無しさん
2017/07/06(木) 19:13:43.60ID:Uj2/753t >>712
static LRESULT CALLBACK proc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
wc.lpfnWndProc = &proc;
これはどういうことかね、くわしく説明してもらおう
static LRESULT CALLBACK proc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
wc.lpfnWndProc = &proc;
これはどういうことかね、くわしく説明してもらおう
720デフォルトの名無しさん
2017/07/09(日) 21:40:21.92ID:u50+Yb/E Windows10タブレットで、画面の右端のメニュー(?)でディスプレイの明るさを変更できるじゃないですか。
あれをプログラムから変更できるようにしたいんですが、Win32APIで可能ですか?
あれをプログラムから変更できるようにしたいんですが、Win32APIで可能ですか?
721デフォルトの名無しさん
2017/07/09(日) 22:21:40.92ID:sO4xRRZ4723デフォルトの名無しさん
2017/07/11(火) 10:34:24.01ID:x+ezuj+Y ソケット通信でUDPでrecv関数でデータ取ってるのですが
これrecvでデータを取る前に何バイト溜まってるか確認するAPIあったら教えてください
これrecvでデータを取る前に何バイト溜まってるか確認するAPIあったら教えてください
724デフォルトの名無しさん
2017/07/11(火) 11:58:32.19ID:EEzJWlBe >>723
.netではioctlsocketでFIONREADを読んでるっぽいのでそれでいんじゃね
.netではioctlsocketでFIONREADを読んでるっぽいのでそれでいんじゃね
725デフォルトの名無しさん
2017/07/11(火) 15:22:08.77ID:x+ezuj+Y >>724
おお、マジでできましたありがとう
おお、マジでできましたありがとう
726デフォルトの名無しさん
2017/07/12(水) 22:50:08.62ID:scyI/W/6 #include <thread>
using namespace std;
・・・
SOCKET Sock = accept( ・・・ );
だとエラーになるんですが、
threadをincludeしない、あるいはusing namespace stdを書かないと、
正常なソケットを返します。
なぜこんなことが起こるのでしょうか??
using namespace std;
・・・
SOCKET Sock = accept( ・・・ );
だとエラーになるんですが、
threadをincludeしない、あるいはusing namespace stdを書かないと、
正常なソケットを返します。
なぜこんなことが起こるのでしょうか??
727デフォルトの名無しさん
2017/07/13(木) 11:47:56.92ID:vFZ8mgsl 名前が衝突してるから
728726
2017/07/13(木) 19:49:38.44ID:NRXck0Ni >>727
でも、エラーもなくコンパイル通りますし、VS上で定義を参照しても、
いずれの場合もWinSockのaccept()が参照されます。
同じWinSockのAPIでbind()がstd::bind()と衝突することはありましたが、
今回のaccept()はそれとは違う感じです。
でも、エラーもなくコンパイル通りますし、VS上で定義を参照しても、
いずれの場合もWinSockのaccept()が参照されます。
同じWinSockのAPIでbind()がstd::bind()と衝突することはありましたが、
今回のaccept()はそれとは違う感じです。
729デフォルトの名無しさん
2017/07/13(木) 19:54:13.72ID:EhXEoqOX エラーになるけどエラーないってことか
730デフォルトの名無しさん
2017/07/13(木) 20:11:37.92ID:WT5N9OT5 >>728
エラーになる最小のコードを晒さんとなんとも言えんわ
エラーになる最小のコードを晒さんとなんとも言えんわ
731726
2017/07/13(木) 20:44:11.52ID:NRXck0Ni >>729
コンパイルエラーはありませんが、
実行時にaccept()がエラーを返します。
>>730
#include <winsock.h>
#pragma comment( lib, "wsock32.lib" )
#include <thread>
using namespace std;
int main()
{
WSADATA WSAData;
WSAStartup( MAKEWORD( 1, 1 ), &WSAData );
SOCKET SockListen = socket( AF_INET, SOCK_STREAM, 0 );
SOCKADDR_IN Addr;
Addr.sin_family = AF_INET;
Addr.sin_addr.s_addr = htonl( INADDR_ANY );
Addr.sin_port = htons( 1234 );
bind( SockListen, ( SOCKADDR* )&Addr, sizeof( SOCKADDR ) );
listen( SockListen, 1 );
SOCKET SockAccept = accept( SockListen, NULL, NULL );
closesocket( SockAccept );
closesocket( SockListen );
WSACleanup();
return 0;
}
これが、accept()がエラーを返すコードです。
#include <thread>かusing namespace std;のいずれか、あるいは両方をコメントアウトすると
正常なソケットを返します。
IDEはVisual Studio Express 2015 for Windows Desktopです。
コンパイルエラーはありませんが、
実行時にaccept()がエラーを返します。
>>730
#include <winsock.h>
#pragma comment( lib, "wsock32.lib" )
#include <thread>
using namespace std;
int main()
{
WSADATA WSAData;
WSAStartup( MAKEWORD( 1, 1 ), &WSAData );
SOCKET SockListen = socket( AF_INET, SOCK_STREAM, 0 );
SOCKADDR_IN Addr;
Addr.sin_family = AF_INET;
Addr.sin_addr.s_addr = htonl( INADDR_ANY );
Addr.sin_port = htons( 1234 );
bind( SockListen, ( SOCKADDR* )&Addr, sizeof( SOCKADDR ) );
listen( SockListen, 1 );
SOCKET SockAccept = accept( SockListen, NULL, NULL );
closesocket( SockAccept );
closesocket( SockListen );
WSACleanup();
return 0;
}
これが、accept()がエラーを返すコードです。
#include <thread>かusing namespace std;のいずれか、あるいは両方をコメントアウトすると
正常なソケットを返します。
IDEはVisual Studio Express 2015 for Windows Desktopです。
732726
2017/07/13(木) 20:49:20.67ID:NRXck0Ni 自己解決しました!
std::bind()とwinsockのbind()が入れ替わってました!
::bind()とすればaccept()もエラーを返さなくなりました。
以前はエラーが出たと思ったのですが、うっかりしてました・・・。
失礼しました!
std::bind()とwinsockのbind()が入れ替わってました!
::bind()とすればaccept()もエラーを返さなくなりました。
以前はエラーが出たと思ったのですが、うっかりしてました・・・。
失礼しました!
733デフォルトの名無しさん
2017/07/13(木) 20:58:52.65ID:WT5N9OT5 ドンマイ
734デフォルトの名無しさん
2017/07/13(木) 21:25:50.23ID:ICDc/LUP bindというマクロが定義されてるライブラリがあって困ったことがあるな
735デフォルトの名無しさん
2017/07/14(金) 10:38:54.13ID:V0t+uF1e736デフォルトの名無しさん
2017/07/14(金) 12:41:08.29ID:g8QLqbc9737デフォルトの名無しさん
2017/07/14(金) 14:56:41.55ID:QI5b+orn738デフォルトの名無しさん
2017/07/14(金) 21:54:21.02ID:rNsHAWgc エンコードした動画データをWinSockを使ってUDPで送信しているんですが、
通信速度が妙に制限されている感じがします。
送信PC → (有線LAN GbE) → Wi-Fiルーター → (無線11ac) → Winタブ
有線の方はGbEなのに、データ量を増やすと8Mbpsあたりで頭打ちになり、
無線の方も11acなのに3Mbpsあたりで受信が頭打ちになります。
(いずれもタスクマネージャーのパフォーマンスタブで確認)
無線の方は最初もっと酷くて、調べたらワイヤレスアダプタが省電力モードになっていたので、
これを解除すると改善はしたのですが、それでも上記の通り3Mbps程度です。
実効帯域は理論値には及ばないとは思いますが、それにしても酷くないですか??
何かリミッターがかかっているのでしょうか?
それともこんなもんでしょうか?
通信速度が妙に制限されている感じがします。
送信PC → (有線LAN GbE) → Wi-Fiルーター → (無線11ac) → Winタブ
有線の方はGbEなのに、データ量を増やすと8Mbpsあたりで頭打ちになり、
無線の方も11acなのに3Mbpsあたりで受信が頭打ちになります。
(いずれもタスクマネージャーのパフォーマンスタブで確認)
無線の方は最初もっと酷くて、調べたらワイヤレスアダプタが省電力モードになっていたので、
これを解除すると改善はしたのですが、それでも上記の通り3Mbps程度です。
実効帯域は理論値には及ばないとは思いますが、それにしても酷くないですか??
何かリミッターがかかっているのでしょうか?
それともこんなもんでしょうか?
739デフォルトの名無しさん
2017/07/15(土) 00:49:20.22ID:9CUWPUhe 受け取り側WinXPにしても速度一緒かね?
DDOS対策されたに一票
DDOS対策されたに一票
740デフォルトの名無しさん
2017/07/15(土) 11:33:44.05ID:UAO9e8fy >>738
jumboフレームにしてないとかいうオチ
jumboフレームにしてないとかいうオチ
741デフォルトの名無しさん
2017/07/15(土) 17:41:49.53ID:9CUWPUhe jumboじゃなくても100MBsecぐらいすぐ出るかと
742デフォルトの名無しさん
2017/07/15(土) 19:33:47.48ID:jhhap/jh 1byte毎にsend()してるとかかも w
743デフォルトの名無しさん
2017/07/15(土) 19:39:10.00ID:GPnBT/AI >>742
+1
+1
744738
2017/07/17(月) 11:59:14.97ID:/eGUIGmm745デフォルトの名無しさん
2017/07/17(月) 15:26:50.32ID:JChZsj9+746デフォルトの名無しさん
2017/07/18(火) 07:29:21.72ID:pxoS8Rlj >>744
ソケットのバッファが溢れているのかもしれない。UDPだからsendしても黙って破棄されうる。これが原因だったらsetsockoptで送信、受信のバッファを大きくすれば良い。
また、UDPではOSが送信速度の調節をしないから、アプリケーション側で一定の速度でsendしないと途中のデバイスや受信側で破棄されることもある。
例えば、5Mbpsで送っているつもりでも、10ms間に500Mbpsで送り、後の990msは何もしていない可能性がある。その場合途中のWi-Fiルータのバッファが溢れるかもしれない。
送信用のスレッドを作り、send毎に経過時間と送信量を調べ、適当にsleepさせれば良い。
ソケットのバッファが溢れているのかもしれない。UDPだからsendしても黙って破棄されうる。これが原因だったらsetsockoptで送信、受信のバッファを大きくすれば良い。
また、UDPではOSが送信速度の調節をしないから、アプリケーション側で一定の速度でsendしないと途中のデバイスや受信側で破棄されることもある。
例えば、5Mbpsで送っているつもりでも、10ms間に500Mbpsで送り、後の990msは何もしていない可能性がある。その場合途中のWi-Fiルータのバッファが溢れるかもしれない。
送信用のスレッドを作り、send毎に経過時間と送信量を調べ、適当にsleepさせれば良い。
747デフォルトの名無しさん
2017/07/18(火) 13:10:40.68ID:Qgn2HB2W LANケーブルの方は10Mbpsでリンクアップしてない?
748デフォルトの名無しさん
2017/07/18(火) 13:18:25.28ID:LIY57LJN パケットキャプチャしないの?
749738
2017/07/18(火) 23:58:54.20ID:wXjNiN5C 本日、色々検証してみまして、分かったことを書きます。
送信側(優先)のPCで、whileループでひたすらsendto()しまくる単純なプログラムを動かしたところ、
何と1Gbps近く出ました!
動画圧縮・送信アプリで送信制限があるかに見えたのは、
単にエンコードのAPIが、一定以上のビットレートではデータサイズが飽和しているだけのようです。
このアプリを複数起動したところ、1プロセス×起動数分の帯域(12Mbps等)をちゃんと消費しました。
しかし、一方の受信側(無線)のタブレットPCでは、whileループでひたすらrecvfrom()しまくっても
5Mbps程度でやはり頭打ちしました。
これらはすべてUDPでの送受信ですが、
試しにTCPではどうか検証してみたところ、
フリーのFTP転送アプリで、送受信ともに、何と200Mbpsくらい出ました!
そんなバカな、と思い、自分でTCP送受信だけをひたすら行う単純なプログラムを書いて実行してみたところ、
200Mbpsには至らなかったものの、26Mbpsくらいまでは送受信ともに出せました。
なお、帯域を大きくすればするほど、送信に失敗する確率が高まる傾向が見られました。
これはTCPで見られる、受信側のバッファ枯渇によるものと思われます。
アプリ側でsetsockopt()で受信バッファを拡張してやると改善し、上記bpsに至りました。
FTP転送アプリがなぜ200Mbpsも叩き出せたかは分かりませんが、
今回の動画送受信アプリでは26Mbpsでも十分な帯域なので、結果的にはUDPからTCPに変更ことで対策が完了しました。
送信側(優先)のPCで、whileループでひたすらsendto()しまくる単純なプログラムを動かしたところ、
何と1Gbps近く出ました!
動画圧縮・送信アプリで送信制限があるかに見えたのは、
単にエンコードのAPIが、一定以上のビットレートではデータサイズが飽和しているだけのようです。
このアプリを複数起動したところ、1プロセス×起動数分の帯域(12Mbps等)をちゃんと消費しました。
しかし、一方の受信側(無線)のタブレットPCでは、whileループでひたすらrecvfrom()しまくっても
5Mbps程度でやはり頭打ちしました。
これらはすべてUDPでの送受信ですが、
試しにTCPではどうか検証してみたところ、
フリーのFTP転送アプリで、送受信ともに、何と200Mbpsくらい出ました!
そんなバカな、と思い、自分でTCP送受信だけをひたすら行う単純なプログラムを書いて実行してみたところ、
200Mbpsには至らなかったものの、26Mbpsくらいまでは送受信ともに出せました。
なお、帯域を大きくすればするほど、送信に失敗する確率が高まる傾向が見られました。
これはTCPで見られる、受信側のバッファ枯渇によるものと思われます。
アプリ側でsetsockopt()で受信バッファを拡張してやると改善し、上記bpsに至りました。
FTP転送アプリがなぜ200Mbpsも叩き出せたかは分かりませんが、
今回の動画送受信アプリでは26Mbpsでも十分な帯域なので、結果的にはUDPからTCPに変更ことで対策が完了しました。
750738
2017/07/19(水) 00:04:16.35ID:eXD5VvDv 今回の検証で、以下のような仮説が立ったのですが、いかがでしょうか?
・11acにまで広帯域化し、TCPの再送制御等のオーバーヘッドが相対的に小さくなった
・11acで帯域は向上し、エラーレートも抑えられているものの、パケットロスする絶対数(機会)は
増加しているため、UDPには向かなくなっている
こうなると、「大容量のデータを効率的に送受信」というUDPのメリットは失われ、
ブロードキャスティングでデータ共有の利点が残る程度になるのかなぁ、という感じです。
この考察は的を射ているでしょうか?
だとしたら、業界では知られてることなんでしょうかね?
・11acにまで広帯域化し、TCPの再送制御等のオーバーヘッドが相対的に小さくなった
・11acで帯域は向上し、エラーレートも抑えられているものの、パケットロスする絶対数(機会)は
増加しているため、UDPには向かなくなっている
こうなると、「大容量のデータを効率的に送受信」というUDPのメリットは失われ、
ブロードキャスティングでデータ共有の利点が残る程度になるのかなぁ、という感じです。
この考察は的を射ているでしょうか?
だとしたら、業界では知られてることなんでしょうかね?
751デフォルトの名無しさん
2017/07/19(水) 01:57:20.58ID:Q4K+dCVc >>750
@TCPのオーバーヘッドは送受信の処理が重いことが主で、別にそれほど帯域を浪費する訳ではない。
ヘッダによる消費は、UDPだと1500バイト中28バイト、TCPだと1500バイト中40バイト。TCPだと適宜ACKが返ってくるが、それも各パケット数十バイト。
送受信側の処理速度向上が大きい。
AUDP向きかどうかは当然何をしたいかに依る。
TCPの処理が邪魔になる場合(遅延やパフォーマンス等の理由で)、「何もしない」UDP上に独自の実装をする。TCPで問題ないならTCPで良い。
信頼できるストリーム通信が必要なら、結局UDP上にTCPもどきを作ることになるだけ。
BTCPの欠点に、RTTが大きいと遅くなることがある。海外との大量のファイル転送はUDP上の独自プロトコルで行ったりする。あと、TCPoverTCPはパフォーマンスが劣化するから、VPNやトンネリングはUDP上が良い。
また、コネクションレスであることは、NATやFWを越える時に便利だったりする。
C普通、何もしないUDPは、余計な処理をするTCPより遅くはならない。UDPで5Mbpsしか出ないのは、どこかのバッファが溢れているか、大きすぎるデータをsendしてフラグメンテーションを起こしているかどちらかの可能性が高い。
@TCPのオーバーヘッドは送受信の処理が重いことが主で、別にそれほど帯域を浪費する訳ではない。
ヘッダによる消費は、UDPだと1500バイト中28バイト、TCPだと1500バイト中40バイト。TCPだと適宜ACKが返ってくるが、それも各パケット数十バイト。
送受信側の処理速度向上が大きい。
AUDP向きかどうかは当然何をしたいかに依る。
TCPの処理が邪魔になる場合(遅延やパフォーマンス等の理由で)、「何もしない」UDP上に独自の実装をする。TCPで問題ないならTCPで良い。
信頼できるストリーム通信が必要なら、結局UDP上にTCPもどきを作ることになるだけ。
BTCPの欠点に、RTTが大きいと遅くなることがある。海外との大量のファイル転送はUDP上の独自プロトコルで行ったりする。あと、TCPoverTCPはパフォーマンスが劣化するから、VPNやトンネリングはUDP上が良い。
また、コネクションレスであることは、NATやFWを越える時に便利だったりする。
C普通、何もしないUDPは、余計な処理をするTCPより遅くはならない。UDPで5Mbpsしか出ないのは、どこかのバッファが溢れているか、大きすぎるデータをsendしてフラグメンテーションを起こしているかどちらかの可能性が高い。
752デフォルトの名無しさん
2017/07/19(水) 09:22:44.41ID:q1yo5LZE >>750
>・11acで帯域は向上し、エラーレートも抑えられているものの、パケットロスする絶対数(機会)は
>増加しているため、UDPには向かなくなっている
そんなにパケットロスしているとtcpも速度出ないですよ。
原理的には、制御して再送する分だけudpより遅くなるでしょう。
udp で速度が出ないのは主として送受信側のバッファ溢れでしょうから、
・送信側は溢れないレートで送信する
例えば帯域1GHz WiFi で 1Gbps で送信したら帯域を食い潰して受信側へ再送出できませんよね。
ケーブルの場合と違って電波は PC->基地局-> 受信側とairを2回経由します。
あまり大量に送ると基地局まで届いてもそこでドロップされます。
・read側はなるべくread I/O を発行しっぱなしにしてあげる
スレッド使うなどカーネルの受信バッファあてにしないで頑張る。
>・11acで帯域は向上し、エラーレートも抑えられているものの、パケットロスする絶対数(機会)は
>増加しているため、UDPには向かなくなっている
そんなにパケットロスしているとtcpも速度出ないですよ。
原理的には、制御して再送する分だけudpより遅くなるでしょう。
udp で速度が出ないのは主として送受信側のバッファ溢れでしょうから、
・送信側は溢れないレートで送信する
例えば帯域1GHz WiFi で 1Gbps で送信したら帯域を食い潰して受信側へ再送出できませんよね。
ケーブルの場合と違って電波は PC->基地局-> 受信側とairを2回経由します。
あまり大量に送ると基地局まで届いてもそこでドロップされます。
・read側はなるべくread I/O を発行しっぱなしにしてあげる
スレッド使うなどカーネルの受信バッファあてにしないで頑張る。
753デフォルトの名無しさん
2017/07/19(水) 11:44:11.55ID:+fK80sDM >>749
FTPはpasvじゃね
FTPはpasvじゃね
754デフォルトの名無しさん
2017/07/19(水) 22:12:25.78ID:54vs2xq7755738
2017/07/19(水) 23:45:01.11ID:eXD5VvDv 詳細なご助言、ありがとうございます。
ソケットプログラミングを舐めてました・・・。
勉強します。
ソケットプログラミングを舐めてました・・・。
勉強します。
756デフォルトの名無しさん
2017/07/23(日) 21:24:45.77ID:i/1Azv/r Windows10の環境で、ShowCursor(FALSE);、ShowCursor(TRUE);
が何故か動かないですが、原因わかりますか?代用のAPIってありますか?
カーソルの形状を透明に置き換えるしかないかな。。。
が何故か動かないですが、原因わかりますか?代用のAPIってありますか?
カーソルの形状を透明に置き換えるしかないかな。。。
757デフォルトの名無しさん
2017/07/23(日) 21:33:57.11ID:gJMUPJMf >>756
自分のプログラムではWindows10で動いてるよ。
複数回呼んだりしてない?
ShowCursor()は内部の参照カウントみたいなのをインクリメント/デクリメントして、
0以上かどうかで表示/非表示が変わる。
確実にやるならwhile文で戻り値(カウント値)をチェックしてやる。
自分のプログラムではWindows10で動いてるよ。
複数回呼んだりしてない?
ShowCursor()は内部の参照カウントみたいなのをインクリメント/デクリメントして、
0以上かどうかで表示/非表示が変わる。
確実にやるならwhile文で戻り値(カウント値)をチェックしてやる。
758デフォルトの名無しさん
2017/07/24(月) 00:50:38.22ID:Q/sCu+tw 自分のアプリ内だけ消したいとかならWM_SETCURSORでSetCursorにぬるぽ渡してるなあ
759デフォルトの名無しさん
2017/07/24(月) 01:03:43.40ID:ApWJ+3q2 動かない原因がわかりました。。。
自分のWINDOWを表示していない場合、カーソル非表示にならないっぽいです。
ジョイスパッドで操作するマウスを作っていて、マウスを移動した後で、
自動的にマウスカーソルの表示/非表示したかったのですが、
自分のウインドウを表示していないためにうまくいかない;;
カーソルの形状変えて回避を試すか、透過ウインドとかで回避?
自分のWINDOWを表示していない場合、カーソル非表示にならないっぽいです。
ジョイスパッドで操作するマウスを作っていて、マウスを移動した後で、
自動的にマウスカーソルの表示/非表示したかったのですが、
自分のウインドウを表示していないためにうまくいかない;;
カーソルの形状変えて回避を試すか、透過ウインドとかで回避?
760デフォルトの名無しさん
2017/07/24(月) 01:40:41.42ID:ApWJ+3q2 もしかして、フック使わないとだめ?
761デフォルトの名無しさん
2017/07/24(月) 02:06:27.33ID:etlzFZfn どうだったかなぁ
グローバルにマウスカーソルを消す方法はあったかなぁ
相当な迷惑行為だからなぁ
そんな事をしたい奴も居ないだろうしなぁ
グローバルにマウスカーソルを消す方法はあったかなぁ
相当な迷惑行為だからなぁ
そんな事をしたい奴も居ないだろうしなぁ
762デフォルトの名無しさん
2017/07/24(月) 02:58:51.42ID:mnSWSFmQ 透過ウィンドウが王道じゃなかったか
忘れたけど
忘れたけど
763デフォルトの名無しさん
2017/07/24(月) 08:28:59.85ID:axe1Ox+X 透過ウィンドウ最大化でなんとかしてた
764デフォルトの名無しさん
2017/07/24(月) 15:15:22.73ID:BdqEvISL vfd
765デフォルトの名無しさん
2017/07/25(火) 00:03:21.82ID:SY0Mxk4f SetSystemCursorで一応変更できるけど完璧にはできない
766デフォルトの名無しさん
2017/07/26(水) 21:44:38.92ID:dmLhcxPj マウスの件ですが、サイズ1x1のウインドウを作って、WM_TIMERでウインドウを追尾するようにして対処しました。
透過ウインドでアルファ1設定しています。0にしちゃうとダメっぽいです。もっといい方法あるのでしょうか?
hWnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_LAYERED, szWindowClass, szTitle,WS_POPUP,0, 0, 1, 1, NULL, NULL, hInstance, NULL);
SetLayeredWindowAttributes(hWnd, 0, 1, LWA_ALPHA); // 透明1
int n;do { n = ShowCursor(0); } while (n >= 0); // マウスカーソルを消す
case WM_TIMER: POINT pt;GetCursorPos(&pt);SetWindowPos(hWnd, HWND_TOPMOST, pt.x, pt.y, 0, 0, SWP_NOSIZE);
透過ウインドでアルファ1設定しています。0にしちゃうとダメっぽいです。もっといい方法あるのでしょうか?
hWnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_LAYERED, szWindowClass, szTitle,WS_POPUP,0, 0, 1, 1, NULL, NULL, hInstance, NULL);
SetLayeredWindowAttributes(hWnd, 0, 1, LWA_ALPHA); // 透明1
int n;do { n = ShowCursor(0); } while (n >= 0); // マウスカーソルを消す
case WM_TIMER: POINT pt;GetCursorPos(&pt);SetWindowPos(hWnd, HWND_TOPMOST, pt.x, pt.y, 0, 0, SWP_NOSIZE);
767片山博文MZ ◆T6xkBnTXz7B0
2017/07/26(水) 21:49:04.00ID:bC5SPfn2 ウィンドウを仮想スクリーンいっぱいにすれば、追尾の必要はない。
768デフォルトの名無しさん
2017/07/26(水) 22:17:49.99ID:dmLhcxPj769片山博文MZ ◆T6xkBnTXz7B0
2017/07/27(木) 01:34:42.30ID:vaTNWP9F >>768
WS_EX_TRANSPARENTを使えば描画が透過になるらしい。
WS_EX_TRANSPARENTを使えば描画が透過になるらしい。
770デフォルトの名無しさん
2017/07/27(木) 16:09:43.62ID:5IXklzdW そのようなことが本当に可能かどうかの確認もせずに書き込むのはなぜなんですか?
実際に昔自分が試したことがあって、完全にわかっているなら良いと思うけど
やったこともないことを、試しもせずに、どうして適当書き込むの?
まずレイヤードウィンドウで、SetLayeredWindowAttributes でアルファ値を0にした場合
完全な透明になるとともに、マウスの当たり判定も何もなくなって
まるでウィンドウが存在していないかのような扱いになるので
マウスカーソルがウィンドウ上に有るよっていう扱いが無くなって
マウスカーソルを非表示にしても、非常時にはならない
で、アルファ値を1とか適当な値にするとマウスの当たり判定が出来るので
めでたくマウスカーソルを非表示にすることが出来る
ここまでは質問者が書いている内容
ここで、ウィンドウサイズを画面いっぱいに広げると
画面全体がアルファ値の「1」の分の影響を受けそうだということもあるが
とりあえず質問者はGPUの負荷を気にしている
そこでアルファ値を0にするとWindows内の最適化でGPUでの合成処理はスキップされるだろうが
しかし先ほども書いた通りマウスの当たり判定も無くなるのでマウスカーソルは消えなくなる
で、この場合WS_EX_TRANSPARENTの何が有効なんだという話
これを指定したからといって、アルファ値が1であればウィンドウは表示されるし
表示されるんなら、GPUに負荷がかかることに変わりなし
だが、ここまでであればまだよい、まだわかる、それはいい、本当の問題は
レイヤードウィンドウにおいてのWS_EX_TRANSPARENTは、「マウスイベントを透過させる」の意だ
つまり、ウィンドウは半透明とかで表示するけども、マウス的には無きものとして扱う
そういう意味であるので、マウスの判定は無くなるし、ウィンドウ上にマウスがあるって扱いも無くなるので
「マウスカーソルは消えない」
だから、レイヤードウィンドウでWS_EX_TRANSPARENTだと
アルファ値が何であろうと、ウィンドウサイズが何であると、関係なく
そもそもマウスカーソルは消えない
つまり言ってることが二重三重にデタラメ
実際に昔自分が試したことがあって、完全にわかっているなら良いと思うけど
やったこともないことを、試しもせずに、どうして適当書き込むの?
まずレイヤードウィンドウで、SetLayeredWindowAttributes でアルファ値を0にした場合
完全な透明になるとともに、マウスの当たり判定も何もなくなって
まるでウィンドウが存在していないかのような扱いになるので
マウスカーソルがウィンドウ上に有るよっていう扱いが無くなって
マウスカーソルを非表示にしても、非常時にはならない
で、アルファ値を1とか適当な値にするとマウスの当たり判定が出来るので
めでたくマウスカーソルを非表示にすることが出来る
ここまでは質問者が書いている内容
ここで、ウィンドウサイズを画面いっぱいに広げると
画面全体がアルファ値の「1」の分の影響を受けそうだということもあるが
とりあえず質問者はGPUの負荷を気にしている
そこでアルファ値を0にするとWindows内の最適化でGPUでの合成処理はスキップされるだろうが
しかし先ほども書いた通りマウスの当たり判定も無くなるのでマウスカーソルは消えなくなる
で、この場合WS_EX_TRANSPARENTの何が有効なんだという話
これを指定したからといって、アルファ値が1であればウィンドウは表示されるし
表示されるんなら、GPUに負荷がかかることに変わりなし
だが、ここまでであればまだよい、まだわかる、それはいい、本当の問題は
レイヤードウィンドウにおいてのWS_EX_TRANSPARENTは、「マウスイベントを透過させる」の意だ
つまり、ウィンドウは半透明とかで表示するけども、マウス的には無きものとして扱う
そういう意味であるので、マウスの判定は無くなるし、ウィンドウ上にマウスがあるって扱いも無くなるので
「マウスカーソルは消えない」
だから、レイヤードウィンドウでWS_EX_TRANSPARENTだと
アルファ値が何であろうと、ウィンドウサイズが何であると、関係なく
そもそもマウスカーソルは消えない
つまり言ってることが二重三重にデタラメ
771デフォルトの名無しさん
2017/07/27(木) 16:26:35.88ID:TSUPQXzA とりあえず全部読んだ
772デフォルトの名無しさん
2017/07/27(木) 16:32:39.41ID:5IXklzdW ちなみにレイヤードウィンドウじゃない普通のウィンドウに
WS_EX_TRANSPARENTを指定しても
今回の件はうまくいかないからな
WS_EX_TRANSPARENTの仕様はその昔のWindowsの描画の仕様に強く依存していて
それ故にかなり複雑な動きをするところもあったかもしれないが
しかしながら今回の件において、それも既に関係が無い
なぜなら今はデスクトップコンポジションだから
ウィンドウは自分のビットマップを持ってるので
かつてのWindowsの再描画の仕様によってもたらされていた
ウィンドウの下のものが透けて見えるように感じる、という現象は起こらない
WS_EX_TRANSPARENTを指定しても
今回の件はうまくいかないからな
WS_EX_TRANSPARENTの仕様はその昔のWindowsの描画の仕様に強く依存していて
それ故にかなり複雑な動きをするところもあったかもしれないが
しかしながら今回の件において、それも既に関係が無い
なぜなら今はデスクトップコンポジションだから
ウィンドウは自分のビットマップを持ってるので
かつてのWindowsの再描画の仕様によってもたらされていた
ウィンドウの下のものが透けて見えるように感じる、という現象は起こらない
773片山博文MZ ◆T6xkBnTXz7B0
2017/07/27(木) 17:02:53.88ID:LWV2Yf86 WM_ERASEBKGNDをつぶせば透過に
774デフォルトの名無しさん
2017/07/27(木) 17:54:30.49ID:5IXklzdW 良くわからないなら少なくとも出来るかどうか確認してから言えといっただろ
775デフォルトの名無しさん
2017/07/27(木) 18:03:15.82ID:DvER6G26 それがにちゃんねるクォリティというもの、コードを貼らない書き込みに期待しないのがいい
776デフォルトの名無しさん
2017/07/27(木) 18:06:42.35ID:46kBibo2 誰に確認してから言えって言ってるの?
回答側に確認義務があるなら、だれも回答したくなくるしヒントも言えんわ。
回答側に確認義務があるなら、だれも回答したくなくるしヒントも言えんわ。
777デフォルトの名無しさん
2017/07/27(木) 18:22:49.05ID:t8Fq16Nl 片山はNGワードでOK
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
