Win32API質問箱 Build116
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/10/30(水) 17:17:04.92■過去スレ
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などの質問はそれぞれの言語や開発環境スレで
0421デフォルトの名無しさん
2013/12/25(水) 16:10:35.110422デフォルトの名無しさん
2013/12/25(水) 18:01:03.150423デフォルトの名無しさん
2013/12/25(水) 20:36:07.68XPのサポート終了時まで?
0424デフォルトの名無しさん
2013/12/25(水) 22:24:30.280425デフォルトの名無しさん
2013/12/25(水) 23:20:47.770426デフォルトの名無しさん
2013/12/26(木) 14:20:15.27http://k-tai.impress.co.jp/docs/news/20131226_629189.html
0427デフォルトの名無しさん
2013/12/26(木) 15:48:17.510428デフォルトの名無しさん
2013/12/26(木) 18:53:57.02バグでしたゴメソでOKww
0429デフォルトの名無しさん
2013/12/27(金) 02:24:51.920430デフォルトの名無しさん
2013/12/27(金) 17:04:49.31ディレクトリを取得する方法ってSHGetFolderPath以外にもどんな方法があるの?
0431デフォルトの名無しさん
2013/12/27(金) 17:41:48.06本来の場所以外に書き換えられてるかもしれない
0432デフォルトの名無しさん
2013/12/27(金) 18:15:11.24Environment.SpecialFolder列挙体は?
0433デフォルトの名無しさん
2013/12/27(金) 19:34:25.400434デフォルトの名無しさん
2013/12/27(金) 22:12:55.090435デフォルトの名無しさん
2013/12/30(月) 11:25:04.47どのapi使えばいい?
0436デフォルトの名無しさん
2013/12/30(月) 21:40:24.800437デフォルトの名無しさん
2013/12/30(月) 23:57:53.58標準出力がリダイレクトされているか判別する方法はありますか?
0438デフォルトの名無しさん
2013/12/31(火) 00:47:31.680439デフォルトの名無しさん
2013/12/31(火) 00:53:44.84あれ、ないんですか?
例えばmoreコマンドは出力先がコンソールの場合は
画面サイズで出力を一時停止しますけど、
リダイレクトされてる場合は一時停止しません。
なので判別方法が何かあるかと思うのですが・・・。
0440デフォルトの名無しさん
2013/12/31(火) 01:06:42.070441デフォルトの名無しさん
2013/12/31(火) 01:18:11.160442デフォルトの名無しさん
2013/12/31(火) 05:57:34.55しばらく気付かんかった・・・
>>437>>439
GetStdHandleして得られたハンドルに対して、GetFileTypeやGetConsoleModeでチェック掛ける。
>>441みたくコンソール専用機能を呼んでエラーを見ても良い
0443デフォルトの名無しさん
2013/12/31(火) 21:56:38.82isatty
0444デフォルトの名無しさん
2014/01/03(金) 22:59:04.180445デフォルトの名無しさん
2014/01/03(金) 23:20:32.250446デフォルトの名無しさん
2014/01/03(金) 23:42:20.480447デフォルトの名無しさん
2014/01/03(金) 23:56:59.880448デフォルトの名無しさん
2014/01/04(土) 00:20:23.420449デフォルトの名無しさん
2014/01/04(土) 00:49:34.64無理じゃないですかね?
というか、かなりハード寄りなので板自体難しいかも。
むしろこの際、Linux板でお願いしたほうが良いかもしれないです。
Linuxユーザーは日頃からドライバを書きなれてると聞きました。
0450デフォルトの名無しさん
2014/01/04(土) 00:52:45.390451デフォルトの名無しさん
2014/01/04(土) 00:58:22.14業務アプリ開発者、カーネル開発者、ハードウェア開発者、経営者などを
一人で兼務している人もたくさんいますよ。
中にはドライバを書けない人もいるとは思いますけど、そっちのほうが
少数派ですよ。
0452デフォルトの名無しさん
2014/01/04(土) 01:22:56.56偽って言うか、仮想ディスプレイドライバじゃねーの?
そもそもノーパソの一つでもあればマルチディスプレイなんて楽にテストできる気がするが。
0453デフォルトの名無しさん
2014/01/04(土) 16:05:46.41流石に分からんなあ…
0454デフォルトの名無しさん
2014/01/04(土) 16:29:16.59TabletPCを180度回すと画面は回転しますが音の左右はそのままなので左右を
入れ替えたいです
0455デフォルトの名無しさん
2014/01/04(土) 17:08:13.38ドトネ池
0456デフォルトの名無しさん
2014/01/04(土) 17:16:56.74金かかるからfreeはやだ
0457デフォルトの名無しさん
2014/01/04(土) 19:42:49.800458デフォルトの名無しさん
2014/01/04(土) 20:01:47.68セマフォを使えば、共有資源にアクセスできる数を制限できるらしい
のですが、2以上にする理由がわかりません。
ある資源に同時にアクセスするスレッドが複数ある場合に排他処理を
して保護するのが目的だと思いますが・・・
2以上にするのであれば、排他処理しなくていいのでは?
と思ってしまいます。
0459デフォルトの名無しさん
2014/01/04(土) 20:07:01.81ドコモなり、AUなり、SBMのサポートに聞け
0460デフォルトの名無しさん
2014/01/04(土) 20:16:55.19プロセスを跨いで、有限のリソースにアクセス出来るのが
セマフォ。
プロセス内で1つのリソースを排他するならクリティカルセクション使えよ
0461デフォルトの名無しさん
2014/01/04(土) 20:21:06.330463デフォルトの名無しさん
2014/01/04(土) 20:36:27.90リソースが2個ならクリティカルセクションを2個用意し、スピンロックを設定したほうが
カーネルモードへの移行がなくてコスト的に安いのですが。
0464デフォルトの名無しさん
2014/01/04(土) 20:40:53.750465デフォルトの名無しさん
2014/01/04(土) 20:44:44.080467デフォルトの名無しさん
2014/01/04(土) 21:03:15.50100なら100だろ
大丈夫か?
0468デフォルトの名無しさん
2014/01/04(土) 21:05:49.470470デフォルトの名無しさん
2014/01/04(土) 22:41:48.250471デフォルトの名無しさん
2014/01/04(土) 23:52:01.21セマフォは複数同時にアクセスを許し、許す数を指定する。
セマフォで1時点で1スレッドの制限ならミューテックスを使えって話。
複数のスレッドから同時にアクセスを許す資源ならセマフォを使う。
0472デフォルトの名無しさん
2014/01/05(日) 00:26:53.78自由に同格に使えるプリンタが2台あるような場合に使うんだよ
セマフォを獲得出来たということは、プリンタが使える
逆に、セマフォが獲得出来なければ、空いているプリンタは無いので待機する
0473デフォルトの名無しさん
2014/01/08(水) 12:28:06.860474デフォルトの名無しさん
2014/01/08(水) 16:22:03.87削除しなければスレ違いOKという運営のメッセージ
0475デフォルトの名無しさん
2014/01/08(水) 16:29:08.020476デフォルトの名無しさん
2014/01/08(水) 17:17:14.090477デフォルトの名無しさん
2014/01/08(水) 19:37:35.42とあるデバイスドライバを使ってBIOSと通信する
プログラムを書いているんですが、
殆どの環境でdeviceioControlが失敗します。
例外をキャッチすると
「PInvoke 関数がスタックを不安定にしています」
と出るんですが、どこが間違えてるのかわからず・・・。
deviceioControlの正しい宣言を教えていただけませんか?
ちなみに環境はVB.net2010で、OSはwindows8,8.1Proです
0478デフォルトの名無しさん
2014/01/08(水) 19:45:28.560479デフォルトの名無しさん
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> 引数の数はあってるはず
先入観を捨てろ
1から見直せ
0481デフォルトの名無しさん
2014/01/08(水) 20:16:34.25つーか動作した環境もあると言ってるしょ。
deviceiocontrolは
・ハンドル
・命令番号
・入力データの先頭ポインタ
・入力データの長さ
・出力データの格納先ポインタ
・出力データバッファの長さ
・出力データ数の格納先変数のポインタ
・動作パラメータ
で一定でしょ。
ポインタはintptr,長さはuintegerで宣言してるけど
それが悪いのか、それとも別の理由なのか
わからない教えて!
0482デフォルトの名無しさん
2014/01/08(水) 20:20:37.60dllinportと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.2732/64で違う場合の鉄則だ
0484デフォルトの名無しさん
2014/01/08(水) 20:48:05.49引数だけに限らず「先入観」を捨てるのよ
0485デフォルトの名無しさん
2014/01/08(水) 21:24:30.140486デフォルトの名無しさん
2014/01/08(水) 21:32:52.690487デフォルトの名無しさん
2014/01/08(水) 22:22:24.37inbuffer,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.120489デフォルトの名無しさん
2014/01/08(水) 22:59:21.140490デフォルトの名無しさん
2014/01/08(水) 23:20:27.86>>489 手がかりを調べるツールはないでしょうか?
例外の原因が絞り込めれば非常に助かるのですが。
0491デフォルトの名無しさん
2014/01/09(木) 00:40:03.71アンマネージな関数にむかって
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.090495デフォルトの名無しさん
2014/01/14(火) 19:39:58.44Dim gch As GCHandle = GCHandle.Alloc(obj, GCHandleType.Pinned)
Dim address As intptr = gch.AddrOfPinnedObject()
hoge(intptr)
gch.Free()
みたいにする。
VC++は確かに高速だけど
直に触りすぎるから好きではないな。
0496あぼーん
NGNG0497あぼーん
NGNG0498あぼーん
NGNG0499デフォルトの名無しさん
2014/01/17(金) 12:14:06.56ブラウザ死亡確定
開発効率の向上とインストールの簡易さ向上により
もはやWebアプリの利点は失われた。
0500デフォルトの名無しさん
2014/01/17(金) 15:33:27.00FLASHが出てきたときもJSの利点はなくなったとか言ってる奴いたなぁ。
あいつ今頃どこで何をしてるんだろう。
0501デフォルトの名無しさん
2014/01/17(金) 16:38:48.65何を言ってるんだ?
ウェブアプリの利点がゼロになったと仮定しても、
ブラウザはウェブブラウジングを行うものとして残り続けるよ
0502片山博文MZコスモ ◆T6xkBnTXz7B0
2014/01/17(金) 17:51:59.070503デフォルトの名無しさん
2014/01/17(金) 17:57:52.74ActivXでそういうページ作れば
0504デフォルトの名無しさん
2014/01/17(金) 18:08:08.710505デフォルトの名無しさん
2014/01/17(金) 18:22:24.430506デフォルトの名無しさん
2014/01/17(金) 19:38:03.080507デフォルトの名無しさん
2014/01/17(金) 20:36:26.24ActiveXでいいじゃん
0508デフォルトの名無しさん
2014/01/17(金) 23:34:35.49JPGやGIFだと、ポップアップメニューから「プレビュー」で表示できますが
あのウインドウを出すAPIはありますでしょうか
拡張子の関連で開くShellExecuteでなく、あのプレビューウインドウを出せたらいいなと
0509デフォルトの名無しさん
2014/01/18(土) 10:25:42.16それって「Windows 画像とFAXビューア」がインストールされていて、エクス
プローラのコンテキストメニューを拡張している前提では?
0510デフォルトの名無しさん
2014/01/18(土) 11:38:51.32関数形式のWin32API脂肪?_?
0511デフォルトの名無しさん
2014/01/18(土) 12:31:21.67確かにタイトルは「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スレタイすら読めないほど頭悪いのか?
それともクズ親に育てられたからわざとスレチで荒らしてんの?
お前生きてるだけで迷惑だよ。
0513デフォルトの名無しさん
2014/01/18(土) 15:36:04.580514デフォルトの名無しさん
2014/01/18(土) 18:00:06.54そこでお前がAPIはこれだと示せばいいだけだ
お前こそが邪魔なんだよ
0515デフォルトの名無しさん
2014/01/18(土) 18:02:19.95同一の社会不適合者だろう
0516デフォルトの名無しさん
2014/01/18(土) 19:44:32.44アンチhogeとapiスレ基地は同一の奴らだろ
0517デフォルトの名無しさん
2014/01/18(土) 20:46:00.92Shimgvw.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最近は運営が私情で好き勝手に削除するようになったんだよ。
おかげで「2chのWin32APIスレはどうせ削除されるからどんな内容でも書き放題」って話をたまにきくようになった。
0520デフォルトの名無しさん
2014/01/18(土) 22:56:26.58神に祈りでもしてたほうが物事もシンプルになるし
こんなことを仕事とかでやらされる人達って苦行でしかないよ
■ このスレッドは過去ログ倉庫に格納されています