問題タブ [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.
.net - .NETで、シンボリックリンクではなく、NTFSでジャンクションを作成するにはどうすればよいですか?
NTFSジャンクションを作成しようとしています。cmd行から、sysinternalsのjunction.exeツールを使用してこれを行うことができます。ジャンクションのDIRcmdの出力は、次のようになります。
ジャンクションはシンボリックリンクのサブセットであるとどこかで読みました。
そこで、 CreateSymbolicLinkを使用してジャンクションを作成してみました。これを行うと、実際にはジャンクションではなくシンボリックリンクが取得されます。
CreateHardLinkもあります。そこにあるドキュメントによると、ジャンクション(別名「リパースポイント」)はハードリンクのサブセットです。しかし、私はこの呼び出しを機能させることができないようです。完了しましたが、ハードリンクまたはジャンクションは作成されていません。
.NET / C#を使用していますが、インポートは次のようになります。
私は何が間違っているのですか?
C#内からジャンクションを作成するにはどうすればよいですか?
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プログラムのように):
出力例は次のとおりです。
c - マウントされた VHD で FSCTL_LOCK_VOLUME が ERROR_ACCESS_DENIED で失敗する
FreeDOS を仮想ハードディスクにインストールするプログラムを開発中です。DiskPart スクリプトを生成および実行して、VHD を作成し、パーティション分割し、フォーマットしてから、ドライブ文字を割り当てます。
これはうまくいきます。インストーラーはすべてを VHD にコピーしますが、ボリュームに直接アクセスする必要があるブート セクターを書き込む必要があります。このプロセスを開始する前に、FSCTL_LOCK_VOLUME でボリュームをロックしようとします。
問題は次のとおりです。これは、(MSDN によると) ボリューム上で開いているファイルがあることを意味しますDeviceIoControl
。ERROR_ACCESS_DENIED
しかし、インストーラーはコピーが完了するとすべてのファイルを閉じるため、他に何が原因なのかわかりません。DiskPart が VHD をマウントした方法と関係がありますか?
サンプル DiskPart スクリプト
注: ファイル パス、ディスク サイズ、ファイル システム、およびドライブ文字の値は、プログラムに指定されたオプションによって異なります。
C コード
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で動かないのですか?
前もって感謝します。
windows - C/C++ でプログラムによって外付け USB HD で「パフォーマンスの向上」を有効にする方法
C/C++ でプログラムを使用して外部 USB HD で「パフォーマンスの向上」を有効にするにはどうすればよいですか。
具体的には、Microsoft Windows のコントロール パネルのデバイス プロパティ ペインについて話しています。これにより、OS レベルの書き込みキャッシュの形式が有効になります。
c# - ディスクをオンライン/オフラインにする
Windows 内のディスクに対して raw IO を実行するプログラムがあります。
ターゲット ディスクがオンラインの場合、すべて正常に動作します。ただし、一部の Windows OS のデフォルトの動作では、新しいディスクが最初にオフラインになります。
Windows でこれを行うための正しい API を見つけるのに苦労しています。同等のコマンド ラインは次のようになります。
ただし、これをコードで実行できる必要があります。DeviceIoControl Win32 API (これは正しいと思います) を調べましたが、使用するコントロール コードを特定できません。見つからないという事実は、使用するより良い API を見逃しているのではないかと考えさせます。
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 を使用しています)#define
IOCTL_STORAGE_QUERY_PROPERTY
ntddstor.h
ntddstor.h
IOCTL_STORAGE_QUERY_PROPERTY
winioctl.h
c# - マーシャリング中に LARGE_INTEGER 値が変更されます : LARGE_INTEGER から UINT64 (C) から C# の uint64 へ
NdisGetCurrentSystemTime
結果を ioctl 経由で C# プログラムにマーシャリングしようとしています。
C# レシーバー側では、時間フィールドは uint64 として定義されます。マーシャリングされた構造体には、他にもいくつかの uint64 フィールドがあります。ただし、行うときは
DBGPRINT とは異なる数値が予想外に大きくなります。
C#:
子:
バイトオーダーでおかしなことはありますか?
python - Python win32file モジュールの不適切な DeviceIoControl パラメータ
Active Protection System と呼ばれる加速度計が組み込まれた Lenovo ThinkPad ラップトップを使用しています。私のオペレーティング システムは Windows 7 で、Python 2.7 がインストールされています。加速度計からデータを読み取ることを想定している python スクリプトをコンパイルしようとしていますが、error: (87, 'DeviceIoControl', 'The parameter is incorrect.')
エラーが発生しています。
デバイスマネージャーで加速度計が見つかりませんでしたが、他のアプリケーションが使用できるように正しくインストールされていることはわかっていますが、到達できないと思いますか?
この問題の原因は何ですか? どうすれば解決できますか?前もって感謝します。
windows - ドライブ文字をパーティションID/ディスクIDに変換する
ドライブ文字が与えられた場合、レジストリを使用せずにOSImage InstallToパーティションIDとディスクIDを取得するにはどうすればよいですか?