問題タブ [deviceiocontrol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
10070 参照

.net - .NETで、シンボリックリンクではなく、NTFSでジャンクションを作成するにはどうすればよいですか?

NTFSジャンクションを作成しようとしています。cmd行から、sysinternalsのjunction.exeツールを使用してこれを行うことができます。ジャンクションのDIRcmdの出力は、次のようになります。

ジャンクションはシンボリックリンクのサブセットであるとどこかで読みました。

そこで、 CreateSymbolicLinkを使用してジャンクションを作成してみました。これを行うと、実際にはジャンクションではなくシンボリックリンクが取得されます。

CreateHardLinkもあります。そこにあるドキュメントによると、ジャンクション(別名「リパースポイント」)はハードリンクのサブセットです。しかし、私はこの呼び出しを機能させることができないようです。完了しましたが、ハードリンクまたはジャンクションは作成されていません。

.NET / C#を使用していますが、インポートは次のようになります。

私は何が間違っているのですか?
C#内からジャンクションを作成するにはどうすればよいですか?

0 投票する
1 に答える
7303 参照

c# - usbser.sysを使用してSerialPort.Open/DeviceIoControl/GetcommStateでフリーズします

COMポートへのハンドルを開き、そこにいくつかのバイトを書き込み、いくつかのバイトを読み取り、ハンドルを閉じて終了するCプログラムがあります。GetCommStateしかし、プログラムを10回続けて実行すると、関数を完了して関数でスタックするのに非常に長い時間がかかり始めSetCommStateます。同じことが、単純なSerialPortオブジェクトを使用するC#でも発生します。

私が見つけた唯一の修正は、デバイスをポートに再接続することです。このフリーズを取り除くためのよりエレガントな方法はありますか?たぶんPCの設定エラーですか?

アップデート

DeviceIoControlの代わりに使用するようにコードを書き直しましたSetCommState。ただし、ここでもまったく同じ問題です。

最初の問題:DeviceIoControlすぐには戻らず(非同期で呼び出されますが)、約2分間ハングします。2番目の問題:2分後にエラーコード121(ERR_SEM_TIMEOUT:「セマフォタイムアウト期間が終了しました。」)で失敗します。

  • 使用するドライバーは標準のWindowsドライバーですusbser.sys
  • 関数呼び出しがすぐに返されない理由について何か考えはありますか?そうでない場合、関数のタイムアウトを短く設定するにはどうすればよいですか?
  • 関数が失敗する理由について何か考えはありますか?

アップデート2

フリーズするサンプルC#コード(上記のCプログラムのように):

出力例は次のとおりです。

0 投票する
1 に答える
2154 参照

c - マウントされた VHD で FSCTL_LOCK_VOLUME が ERROR_ACCESS_DENIED で失敗する

FreeDOS を仮想ハードディスクにインストールするプログラムを開発中です。DiskPart スクリプトを生成および実行して、VHD を作成し、パーティション分割し、フォーマットしてから、ドライブ文字を割り当てます。

これはうまくいきます。インストーラーはすべてを VHD にコピーしますが、ボリュームに直接アクセスする必要があるブート セクターを書き込む必要があります。このプロセスを開始する前に、FSCTL_LOCK_VOLUME でボリュームをロックしようとします。

問題は次のとおりです。これは、(MSDN によると) ボリューム上で開いているファイルがあることを意味しますDeviceIoControlERROR_ACCESS_DENIEDしかし、インストーラーはコピーが完了するとすべてのファイルを閉じるため、他に何が原因なのかわかりません。DiskPart が VHD をマウントした方法と関係がありますか?

サンプル DiskPart スクリプト

注: ファイル パス、ディスク サイズ、ファイル システム、およびドライブ文字の値は、プログラムに指定されたオプションによって異なります。

C コード

0 投票する
1 に答える
511 参照

winpcap - Winpcap および DeviceIoControl - Win7 でのエラー コード 1

OID をネットワーク アダプタに送信するために、Winpcap PacketRequest() 関数 (packet32.h にあります) を使用しようとしています。XP32 では動作しますが、Win7 32 および Win7 64 では動作しません (Win7 64 では最後のエラー コード 1 が表示されますが、32 ではわかりません。現時点では 32 ビットにアクセスできません)。私は PacketRequest() 関数のソースを見ました - それは DeviceIoControl() を呼び出します。これは失敗する関数であり、したがって PacketRequest() も失敗します。

間違った Winpcap ライブラリを使用していますか? (WinPcap_4_1_2.exeをインストールしました)

なぜWin7で動かないのですか?

前もって感謝します。

0 投票する
2 に答える
1450 参照

windows - C/C++ でプログラムによって外付け USB HD で「パフォーマンスの向上」を有効にする方法

C/C++ でプログラムを使用して外部 USB HD で「パフォーマンスの向上」を有効にするにはどうすればよいですか。

具体的には、Microsoft Windows のコントロール パネルのデバイス プロパティ ペインについて話しています。これにより、OS レベルの書き込みキャッシュの形式が有効になります。

より良いパフォーマンス ポリシー

0 投票する
4 に答える
4605 参照

c# - ディスクをオンライン/オフラインにする

Windows 内のディスクに対して raw IO を実行するプログラムがあります。

ターゲット ディスクがオンラインの場合、すべて正常に動作します。ただし、一部の Windows OS のデフォルトの動作では、新しいディスクが最初にオフラインになります。

Windows でこれを行うための正しい API を見つけるのに苦労しています。同等のコマンド ラインは次のようになります。

ただし、これをコードで実行できる必要があります。DeviceIoControl Win32 API (これは正しいと思います) を調べましたが、使用するコントロール コードを特定できません。見つからないという事実は、使用するより良い API を見逃しているのではないかと考えさせます。

0 投票する
2 に答える
2393 参照

c++ - エラー: 'IOCTL_STORAGE_QUERY_PROPERTY' はこのスコープで宣言されていません

含めましたが、そのファイルにはforwinioctl.hがありません!! http://www.osronline.com/ddkx/storage/k307_8z3m.htmにあると言われています が、Windows XP では何も見つかりません。ただし 、Windows XPで動作するはずであると述べています(Vista固有のクエリは必要ありません)。(私は Visual C++ を使用していません。MinGW で Qt を使用しています)#defineIOCTL_STORAGE_QUERY_PROPERTYntddstor.hntddstor.hIOCTL_STORAGE_QUERY_PROPERTYwinioctl.h

0 投票する
2 に答える
1142 参照

c# - マーシャリング中に LARGE_INTEGER 値が変更されます : LARGE_INTEGER から UINT64 (C) から C# の uint64 へ

NdisGetCurrentSystemTime結果を ioctl 経由で C# プログラムにマーシャリングしようとしています。

C# レシーバー側では、時間フィールドは uint64 として定義されます。マーシャリングされた構造体には、他にもいくつかの uint64 フィールドがあります。ただし、行うときは

DBGPRINT とは異なる数値が予想外に大きくなります。

C#:

子:

バイトオーダーでおかしなことはありますか?

0 投票する
0 に答える
1618 参照

python - Python win32file モジュールの不適切な DeviceIoControl パラメータ

Active Protection System と呼ばれる加速度計が組み込まれた Lenovo ThinkPad ラップトップを使用しています。私のオペレーティング システムは Windows 7 で、Python 2.7 がインストールされています。加速度計からデータを読み取ることを想定している python スクリプトをコンパイルしようとしていますが、error: (87, 'DeviceIoControl', 'The parameter is incorrect.')エラーが発生しています。

デバイスマネージャーで加速度計が見つかりませんでしたが、他のアプリケーションが使用できるように正しくインストールされていることはわかっていますが、到達できないと思いますか?

この問題の原因は何ですか? どうすれば解決できますか?前もって感謝します。

0 投票する
2 に答える
2920 参照

windows - ドライブ文字をパーティションID/ディスクIDに変換する

ドライブ文字が与えられた場合、レジストリを使用せずにOSImage InstallToパーティションIDディスクIDを取得するにはどうすればよいですか?