トップページ⇒tech
1001コメント256KB

Win32API質問箱 Build116

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/30(水) 17:17:04.92
Win32APIについての質問はこちらへどうぞ。

■過去スレ
Win32API質問箱 Build115
http://toro.2ch.net/test/read.cgi/tech/1373671389/

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0461デフォルトの名無しさん2014/01/04(土) 20:21:06.33
例えばDBサーバに接続したいけど同時にたくさん接続するとDBサーバに負荷がかかるから10接続までに制限したいとか、そういうのでどう
0462182014/01/04(土) 20:23:09.13
>>458
リソースが二個あるとかだろ。
0463デフォルトの名無しさん2014/01/04(土) 20:36:27.90
>>462
リソースが2個ならクリティカルセクションを2個用意し、スピンロックを設定したほうが
カーネルモードへの移行がなくてコスト的に安いのですが。
0464デフォルトの名無しさん2014/01/04(土) 20:40:53.75
どうぞご自由に
0465デフォルトの名無しさん2014/01/04(土) 20:44:44.08
ここで聞いても仕方ないよw
0466182014/01/04(土) 20:58:51.58
>>463
どっちのクリティカルセクションで待つの?
あと、リソースが 100個あったらどうする気?
0467デフォルトの名無しさん2014/01/04(土) 21:03:15.50
2こで2なら
100なら100だろ

大丈夫か?
0468デフォルトの名無しさん2014/01/04(土) 21:05:49.47
Wikipediaのセマフォを読んでわからなかったら、また質問にきなさい
0469182014/01/04(土) 21:11:12.16
>>467
前半読んでから出直せよ...
0470デフォルトの名無しさん2014/01/04(土) 22:41:48.25
他には誰も解答できていない件
0471デフォルトの名無しさん2014/01/04(土) 23:52:01.21
ミューテックスは資源にアクセスできるのがある時点で1スレッド。
セマフォは複数同時にアクセスを許し、許す数を指定する。
セマフォで1時点で1スレッドの制限ならミューテックスを使えって話。
複数のスレッドから同時にアクセスを許す資源ならセマフォを使う。
0472デフォルトの名無しさん2014/01/05(日) 00:26:53.78
>>458
自由に同格に使えるプリンタが2台あるような場合に使うんだよ
セマフォを獲得出来たということは、プリンタが使える
逆に、セマフォが獲得出来なければ、空いているプリンタは無いので待機する
0473デフォルトの名無しさん2014/01/08(水) 12:28:06.86
そんな機能WinAPIにあったの?
0474デフォルトの名無しさん2014/01/08(水) 16:22:03.87
運営が削除するだろ
削除しなければスレ違いOKという運営のメッセージ
0475デフォルトの名無しさん2014/01/08(水) 16:29:08.02
消されると増えるログ
0476デフォルトの名無しさん2014/01/08(水) 17:17:14.09
かかってこいよ
0477デフォルトの名無しさん2014/01/08(水) 19:37:35.42
vb.netからWIN32APIを呼ぶときの質問いいですか?

とあるデバイスドライバを使ってBIOSと通信する
プログラムを書いているんですが、
殆どの環境でdeviceioControlが失敗します。

例外をキャッチすると
「PInvoke 関数がスタックを不安定にしています」
と出るんですが、どこが間違えてるのかわからず・・・。
deviceioControlの正しい宣言を教えていただけませんか?

ちなみに環境はVB.net2010で、OSはwindows8,8.1Proです
0478デフォルトの名無しさん2014/01/08(水) 19:45:28.56
スタックが狂うなら引数の数か呼び出し規約を間違えているに決まっているだろ
0479デフォルトの名無しさん2014/01/08(水) 20:02:20.57
甘えているといわれるかもしれないけど、
宣言の方法を教えていただけませんかね。

引数の数はあってるはず。多分宣言時の型が間違っているのだろうけど

http://www.pinvoke.net/default.aspx/kernel32.deviceiocontrol

上のサイトのvb signatureを引用して
marshal.allocglobalでポインタに必要な配列分のメモリを割り当てて
実行して結果をとるというもの。

64bit win8.1では動くこともあった。
32bit win8では動かず。
0480デフォルトの名無しさん2014/01/08(水) 20:11:02.98
>>479
> 引数の数はあってるはず
先入観を捨てろ
1から見直せ
0481デフォルトの名無しさん2014/01/08(水) 20:16:34.25
んなあほな。合ってるがな。
つーか動作した環境もあると言ってるしょ。

deviceiocontrolは
・ハンドル
・命令番号
・入力データの先頭ポインタ
・入力データの長さ
・出力データの格納先ポインタ
・出力データバッファの長さ
・出力データ数の格納先変数のポインタ
・動作パラメータ

で一定でしょ。
ポインタはintptr,長さはuintegerで宣言してるけど
それが悪いのか、それとも別の理由なのか
わからない教えて!
0482デフォルトの名無しさん2014/01/08(水) 20:20:37.60
これは合っているのだろうか。
dllinportとdeclareで動作が変わることなどあるのだろうか

Public Declare Function DeviceIoControl_IOCTL_GET_DISK_LENGTH_INFO Lib "kernel32" Alias "DeviceIoControl" ( _
ByVal hDevice As System.Int32, _
ByVal dwIoControlCode As System.Int32, _
ByRef lpInBuffer As System.Int32, _
ByVal nInBufferSize As System.Int32, _
ByRef lpOutBuffer As GET_LENGTH_INFORMATION, _
ByVal nOutBufferSize As System.Int32, _
ByRef lpBytesReturned As System.Int32, _
ByRef lpOverlapped As OVERLAPPED) As System.Boolean

<StructLayout(LayoutKind.Sequential)> _
Public Structure OVERLAPPED
Public Internal As System.Int32
Public InternalHigh As System.Int32
Public offset As System.Int32
Public OffsetHigh As System.Int32
Public hEvent As System.Int32
End Structure
0483デフォルトの名無しさん2014/01/08(水) 20:26:52.27
整数の長さを見直しなさい
32/64で違う場合の鉄則だ
0484デフォルトの名無しさん2014/01/08(水) 20:48:05.49
>>481
引数だけに限らず「先入観」を捨てるのよ
0485デフォルトの名無しさん2014/01/08(水) 21:24:30.14
抽象的なこといわず、答えを教えてくださいよ。
0486デフォルトの名無しさん2014/01/08(水) 21:32:52.69
そのサイトから引用したという宣言を「コピペ」しろ
0487デフォルトの名無しさん2014/01/08(水) 22:22:24.37
こんな感じです。
inbuffer,outbufferにはmarshal.allsocGlobal()でメモリを割り当ててます

<DllImport("Kernel32.dll", SetLastError := False, CharSet := CharSet.Auto)>
Public Shared Function DeviceIoControl( _
ByVal hDevice As Microsoft.Win32.SafeHandles.SafeFileHandle, _
ByVal IoControlCode As EIOControlCode, _
ByVal InBuffer As IntPtr, _
ByVal nInBufferSize As UInteger,
ByVal OutBuffer As IntPtr,
ByVal nOutBufferSize As UInteger, _
ByRef pBytesReturned As UInteger,
ByRef Overlapped As System.Threading.NativeOverlapped) As Boolean
End Function
0488デフォルトの名無しさん2014/01/08(水) 22:40:38.12
> ByRef pBytesReturned As UInteger,
0489デフォルトの名無しさん2014/01/08(水) 22:59:21.14
この通りに宣言されてるなら問題ない 別の理由
0490デフォルトの名無しさん2014/01/08(水) 23:20:27.86
>>488 間違えてますか?
>>489 手がかりを調べるツールはないでしょうか?
 例外の原因が絞り込めれば非常に助かるのですが。
0491デフォルトの名無しさん2014/01/09(木) 00:40:03.71
>>488 わかりました多分。
アンマネージな関数にむかって
byrefでメモリアドレス渡したら駄目ですね。

intptrにして、DWORDなので4バイトメモリ確保してみます。
64ビットも意識してmarshal.sizeof(integer)のほうがいいでしょうか。

最期のoverlap構造体もintptrにしてintptr.zeroを
値として渡したほうがいいでしょうか。

明日検証の本体で確かめてみます。
0492デフォルトの名無しさん2014/01/09(木) 21:47:41.46
ポインタ型はすべてアンマネージでメモリを確保したら
問題なく動作したよ。

ただ、deviceiocontrolがクソ遅い。これはどうしたら。
0493デフォルトの名無しさん2014/01/12(日) 00:15:46.21
ボインボインが使えれば
舐められれば
吸えれば
神言語
0494デフォルトの名無しさん2014/01/12(日) 01:25:53.09
これがVBか
0495デフォルトの名無しさん2014/01/14(火) 19:39:58.44
>>495 使えるけどVCと違ってガベージコレクタを意識しなきゃいけないんだよ

Dim gch As GCHandle = GCHandle.Alloc(obj, GCHandleType.Pinned)
Dim address As intptr = gch.AddrOfPinnedObject()

hoge(intptr)

gch.Free()

みたいにする。
VC++は確かに高速だけど
直に触りすぎるから好きではないな。
0496あぼーんNGNG
あぼーん
0497あぼーんNGNG
あぼーん
0498あぼーんNGNG
あぼーん
0499デフォルトの名無しさん2014/01/17(金) 12:14:06.56
http://wired.jp/2014/01/16/death-pc-also-mean-end-web/

ブラウザ死亡確定
開発効率の向上とインストールの簡易さ向上により
もはやWebアプリの利点は失われた。
0500デフォルトの名無しさん2014/01/17(金) 15:33:27.00
>>499
FLASHが出てきたときもJSの利点はなくなったとか言ってる奴いたなぁ。
あいつ今頃どこで何をしてるんだろう。
0501デフォルトの名無しさん2014/01/17(金) 16:38:48.65
>>499
何を言ってるんだ?
ウェブアプリの利点がゼロになったと仮定しても、
ブラウザはウェブブラウジングを行うものとして残り続けるよ
0502片山博文MZコスモ ◆T6xkBnTXz7B0 2014/01/17(金) 17:51:59.07
ウィンドウズってブラウザからワンクリックインストールできないの?
0503デフォルトの名無しさん2014/01/17(金) 17:57:52.74
ブラウザからexe起動できるようにさせとけば出来るよ
ActivXでそういうページ作れば
0504デフォルトの名無しさん2014/01/17(金) 18:08:08.71
ブラウザから特定のアプリがインストール済みとかバージョンとか確認できればいいのに。マイクロソフトさん、お願いします。
0505デフォルトの名無しさん2014/01/17(金) 18:22:24.43
できますよ
0506デフォルトの名無しさん2014/01/17(金) 19:38:03.08
JSとFlashは実質的に同じころ出てきたんだよね。
0507デフォルトの名無しさん2014/01/17(金) 20:36:26.24
>>504
ActiveXでいいじゃん
0508デフォルトの名無しさん2014/01/17(金) 23:34:35.49
エクスプローラからファイルを右クリックすると
JPGやGIFだと、ポップアップメニューから「プレビュー」で表示できますが
あのウインドウを出すAPIはありますでしょうか
拡張子の関連で開くShellExecuteでなく、あのプレビューウインドウを出せたらいいなと
0509デフォルトの名無しさん2014/01/18(土) 10:25:42.16
>>508
それって「Windows 画像とFAXビューア」がインストールされていて、エクス
プローラのコンテキストメニューを拡張している前提では?
0510デフォルトの名無しさん2014/01/18(土) 11:38:51.32
ストアアプリだと、オブジェクト形式のWindows APIなんだね。
関数形式のWin32API脂肪?_?
0511デフォルトの名無しさん2014/01/18(土) 12:31:21.67
>>509
確かにタイトルは「Windows 画像とFAXビューア」でした
Windows標準機能かと思っていました
が、取り敢えず正体はShimgvw.dllで、これをRundll32.exeから呼ぶのだそうです
APIでなく、
Rundll32.exe Shimgvw.dll,ImageView_Fullscreen C:\0018.bmp
をそのまま実行すればアニメGifでもTiffでも表示できますね
0512デフォルトの名無しさん2014/01/18(土) 14:56:51.57
>APIでなく
スレタイすら読めないほど頭悪いのか?
それともクズ親に育てられたからわざとスレチで荒らしてんの?
お前生きてるだけで迷惑だよ。
0513デフォルトの名無しさん2014/01/18(土) 15:36:04.58
MacKain not obeying
0514デフォルトの名無しさん2014/01/18(土) 18:00:06.54
>>512
そこでお前がAPIはこれだと示せばいいだけだ
お前こそが邪魔なんだよ
0515デフォルトの名無しさん2014/01/18(土) 18:02:19.95
他スレ荒らしてるアンチhogeと罵り方がそっくり
同一の社会不適合者だろう
0516デフォルトの名無しさん2014/01/18(土) 19:44:32.44
>>515
アンチhogeとapiスレ基地は同一の奴らだろ
0517デフォルトの名無しさん2014/01/18(土) 20:46:00.92
>>511
Shimgvw.dll内のImageView_Fullscreenを呼べば立派なWin32APIじゃね?
0518デフォルトの名無しさん2014/01/18(土) 21:32:10.91
お前らが今やってるのは
ネトウヨ vs 在日のフリしたネトウヨ

にしてもこれは何だ

http://webcache.googleusercontent.com/search?q=cache:0hOmvGZxuMwJ:toro.2ch.net/test/read.cgi/tech/1383121024/+&;cd=1&hl=ja&ct=clnk&gl=jp

>>495付近のログがおかしい
Googleキャッシュと別物になってる

書き込み内容もたいして問題ないし
書き込み方が異常だったとかで削除したのか?
0519デフォルトの名無しさん2014/01/18(土) 21:38:48.72
>>518
最近は運営が私情で好き勝手に削除するようになったんだよ。
おかげで「2chのWin32APIスレはどうせ削除されるからどんな内容でも書き放題」って話をたまにきくようになった。
0520デフォルトの名無しさん2014/01/18(土) 22:56:26.58
実際、プログラムなんて書いてる暇なんてあったら
神に祈りでもしてたほうが物事もシンプルになるし
こんなことを仕事とかでやらされる人達って苦行でしかないよ
0521デフォルトの名無しさん2014/01/18(土) 23:20:58.95
神に祈りをささげても何も起こらないが
プログラムを書けば少なくともそれは実行される
有言実行なだけ神よりはまし
0522デフォルトの名無しさん2014/01/18(土) 23:25:53.77
>>520
FSMの信者ですか?
0523デフォルトの名無しさん2014/01/18(土) 23:35:58.97
手順に雁字搦めにされた囚われのプログラマーさんには
過去の呪縛に囚われ続けるプログラムを動かすことしかできない
さては君、どのような世界をも創造できる神の偉大さを知らないんだね?
祈りと瞑想の力を知らないんだね?もったいない!
0524uy2014/01/19(日) 01:09:32.53
プログラマの総数が増えると
0525uy2014/01/19(日) 01:10:28.42
もうやだ途中送信した

もういい死ね
0526デフォルトの名無しさん2014/01/19(日) 01:24:48.70
あのな、プログラマの総数が増えると国力が落ちる可能性がある
IT業界は不況なのではなく虚業
どうせ100人の雑魚がゴミッカスソースコードを書いたところで捨てるんだから
1人ハッカーレベルがいれば良い
プログラミングはいずれ終焉する
ハッカーがどんどん便利なもの、効率的なものを作り出して行って、
技術・知識がなくても効率を出せるようになってくる
結局、たった一人の力で何百人もの仕事ができるなんていう「才能ある奴にとっては」美味しい状況なんて
長続きしない
いずれは、だれがプログラミングしても似たような結果が得られる方向へ動いてしまう
プログラマや技術者なんてのは常に足りない状態で良い

日本にPGは、多すぎ
0527デフォルトの名無しさん2014/01/19(日) 01:35:01.68
>>526
とか言ってたΣプロジェクト。
まぁアレはアレで別の問題だけど。
0528デフォルトの名無しさん2014/01/19(日) 06:33:47.95
よほどITに疎くなければ気づける事でしょ
Σプロジェクトなんての初めて聞いた

ITダメな奴に指揮やらせた結果がこれか
日本のソフトウェアが弱い理由の一因かね
0529デフォルトの名無しさん2014/01/19(日) 07:16:41.73
Σ
Σ
Σ
0530デフォルトの名無しさん2014/01/19(日) 07:58:26.74
>>518
いや、単に荒らしの書き込みが削除されただけじゃん
むしろ削除足りんくらいだと思うけど
0531デフォルトの名無しさん2014/01/19(日) 08:11:02.22
ここは削除リクエストしなくても削除される特殊なスレ
0532デフォルトの名無しさん2014/01/19(日) 09:18:32.07
Σプロジェクト知らないって、ゆとり世代の自称ハッカーさん?
0533デフォルトの名無しさん2014/01/19(日) 10:21:58.86
よほどITに疎くなければ知らないわけないと思うがw
0534デフォルトの名無しさん2014/01/19(日) 10:22:59.12
>>526
お前にできるのは100のスレにゴミを撒き散らすだけだろ
0535デフォルトの名無しさん2014/01/19(日) 10:39:37.95
俺も多分ゆとりだけど、名前は忘れてたけど、ググったら…ああコレか、とは思った
0536デフォルトの名無しさん2014/01/19(日) 11:45:45.56
>>526
1人で足りるわけねーだろ
日本に多すぎるのはPGではなく、世話ばっかり焼かせるPGもどきだ
バブル期の日本の勢いをもう忘れたか? 甘ったれが問題の根底だよ
0537デフォルトの名無しさん2014/01/19(日) 15:01:21.46
俺が知っているのは技術方面のみで業界については知らないとはっきり言っておく
IT業界に関わる気ないし
本当の意味で独学であって、そこから導き出される答えが偶然にも
お前らの業界に蔓延る常識とマッチしてるか否かの問題
0538デフォルトの名無しさん2014/01/19(日) 15:13:42.88
Project Kyrillとは、SmokymonkeySによって 2009年4月ごろから開発されている
アクション・アドベンチャーRPGのコードネームです。
Unity3Dゲームエンジンを使って、2名のアマチュアによってつくられています。
ブラウザ上でプレイできるオンラインのシングル/マルチプレイのゲームになる
予定です。MMORPGではありません。
http://www.smokymonkeys.com/kyrill/

オンラインで遊べるオープンワールドのHack & SlashタイプのRPG。MMORPGじゃない。
冒険、探索、採取、戦闘など、RPGのごく当たり前の楽しさを、ごく当たり前に遊べるように。
プレイヤーにもクリーチャーにもレベルがなく、レベルを上げるためにクエストをやる必要もない。
プレイヤーは3つのクラス、6つのキャラクターから選ぶ。アイテムやスタッツは全クラス共通。
ユニークなスキルツリーと、ランダムスタッツを持つ個性的なアイテム。
無数の秘密の道や隠された場所がある豊かで複雑なワールド。
ランダム生成されるダンジョン。
自分のペースで遊べるシングルプレイと、数人の仲間と遊べるマルチプレイ。世界中のプレイヤーと
競い合えるさまざまなランキング。
0539デフォルトの名無しさん2014/01/19(日) 16:54:18.28
UnityはWindowsAPIに含まれるのか否か

今のWindowsの仕様もう飽きた
そろそろインターフェースレベルで次世代の規格に移行してほしい
0540デフォルトの名無しさん2014/01/19(日) 17:11:50.56
むしろ"含ませない"だろ
WinAPIは過去の技術
0541デフォルトの名無しさん2014/01/19(日) 17:43:56.72
新しいか古いかじゃなくて信頼できるかどうか
最新wwwつってすぐ捨てるのが悪い
0542デフォルトの名無しさん2014/01/19(日) 18:23:18.20
言ってる意味が良くわからない

Unityの非WinAPIの部分を
MSがWinAPIってカテゴリーの中に入れるってことか?
0543デフォルトの名無しさん2014/01/19(日) 18:34:07.54
結局ドットネットも細かく制御しようとしたらwin32api呼ぶ羽目になる
それ自体で完結してないもの一色にしようとしたって無理な話だ
0544デフォルトの名無しさん2014/01/19(日) 18:42:21.01
ゲームエンジンはWinAPIとはあまり関係ないからね
ウィンドウの作成周りに使ってる可能性は高いけど
そんだけの事で、他の多くはWinAPI介さずに直でハードウェアとやり取りする

アプリ開発は .NETでやっていける
そもそもマイナーなWinAPI関数とか、ウィルスの作成に利用されるリスクもあって
MSにとっても使って欲しくはない産物だと思うから
いずれ消される時に消される
今からWinAPIを拡張とかがまずありえないんだよ
0545デフォルトの名無しさん2014/01/19(日) 18:47:53.49
↑だといいな〜って妄想
0546デフォルトの名無しさん2014/01/19(日) 18:55:43.28
期待してるよ
0547デフォルトの名無しさん2014/01/19(日) 19:09:52.95
いやWinAPIがなくなると
アングラ系の技術の9割が何もできなくなる
けど普通のアプリも動かなくなるから窓を閉められない

窓開けっぱなしだと寒いけど、暖房つけて何とかしてる状態が今のWindows
0548デフォルトの名無しさん2014/01/19(日) 19:24:24.27
RT失敗して次どこに行くのか迷ってるのに
0549デフォルトの名無しさん2014/01/19(日) 20:02:16.65
APIをなくすと過去アプリの互換性総崩れだから
今後もなくなることはないだろうな。
0550デフォルトの名無しさん2014/01/19(日) 20:17:09.65
一度公開してしまったものは引っ込めるのは困難だ
だから逆に発表するのはじっくり考えてからにするべきなんだ
API乱発しすぎ
0551デフォルトの名無しさん2014/01/19(日) 20:25:03.92
ひっこめなくても改修すりゃいいんだけど
絶対やらないな
0552デフォルトの名無しさん2014/01/19(日) 20:33:33.21
改修ってのはバージョンの乱立を意味するのだが

IEやサービスパックのバージョンすら分からない無知なユーザーの混乱を増やすのは害悪

その中でDirectXとドットネットはうまく行っている方と言えるだろうか
0553デフォルトの名無しさん2014/01/19(日) 20:55:24.93
XPで公開したCOMインターフェイスが速攻でobsoleteになったりしてるもんな
そのわりには次期バーションで使えなくなるかもしれないから使うな、みたいなインターフェイスが
Vista,7,8と使えたりする
0554デフォルトの名無しさん2014/01/19(日) 21:02:00.31
シフトJISはいつまで生き残るのか
0555デフォルトの名無しさん2014/01/19(日) 21:14:23.84
ShiftJISとcp932がごっちゃになってる時点で語る資格がない
0556デフォルトの名無しさん2014/01/19(日) 22:20:52.83
過去の資産の互換性云々という話なら
仮想化を活用して対処しようというのがMSの出した一応の結論ではあると思う

現状は、仮想化で再現したりはできるんだけど
代わりに持ってくるはずの”次世代”仕様が宙を浮いてる
システムがWinAPIに依存してしまっていて抜け出せないのかもね
0557デフォルトの名無しさん2014/01/19(日) 22:57:54.29
紙文書やファイラーみたいに Win32 でいいものもあるのに・・
専ブラだってレスのポップアップに陰(kageじゃなく)がついたら何が面白いんだか
0558デフォルトの名無しさん2014/01/19(日) 23:07:42.03
いいものって裏でかなりのトリックが使われてたりする
標準の使用感からちょっと抜け出そうとするだけで
莫大な労力が必要になってたり

はたから見れば、ちょっとした違いでしかなかったりして
OSから見れば、項目の状態をちょっとだけ変えましたみたいなものなのに
こんなに膨大な手続きが必要なの?みたいな
0559デフォルトの名無しさん2014/01/20(月) 06:35:19.06
書いてる奴がアホなだけ
今の時代に「膨大な手続き」など10割に限りなく近い範囲で必要ない
膨大な手続きを省略するノウハウをそのゴミッカスPGが所持してないだけだから
0560デフォルトの名無しさん2014/01/20(月) 11:40:43.38
周回遅れはすっこんでろ
0561デフォルトの名無しさん2014/01/20(月) 14:43:50.21
死ねゴミ
■ このスレッドは過去ログ倉庫に格納されています