1

カスタムPCIカードにアクセスするためのWindowsデバイスドライバーを作成しました。ドライバーはCreateFileを使用して、カードへのハンドルを取得します。

最近、あるインストールで問題が発生しました。カードが機能しなくなったようです。カードを交換してみました(交換も機能しないようです)。コンピュータベンダーがマザーボードを交換しましたが、両方のカードはまだ機能しませんでした。カードを別のコンピューターに入れましたが、どちらも正常に機能しました。

私たちは今、私たちのオフィスに検査用のコンピューターを持っています。Windowsのデバイスマネージャは、通常どおり他のデバイスにカードを一覧表示し、正常に動作していると表示します。ただし、カードに接続しようとすると、ドライバーの初期化は失敗します。

追加のデバッグを使用してドライバーのテストバージョンを作成し、CreateFileが失敗していることを確認しました。失敗した場合に想定されるINVALID_HANDLE_VALUEを返します。GetLastErrorは、エラーがアクセスが拒否されたことを示します。

ローカル管理者としてシステムにログインしているので、デバイスへのアクセスを拒否できるのは何ですか?

4

2 に答える 2

1

Windowsカーネルの「チェック済み」ビルドを試してみることをお勧めします。これは、デバッグチャネルを通じて利用できるはるかに多くの診断情報を持つデバッグビルドです。前回(数年前に)使用したとき、ビルドはMSDNで入手できましたが、私の情報はおそらく古くなっています。

于 2010-05-04T21:35:31.893 に答える
1

これはデバイス ドライバーのようには聞こえません。CreateFile() は、通常の Win32 アプリでのみ使用できます。これもエラーと一致します。デバイス ドライバーは、Win32 アプリのようなセキュリティ制限の対象ではありません。

はい、CreateFile() でデバイスへのハンドルを開く際に問題が発生する可能性があります。ユーザー アカウントには少なくとも SE_BACKUP_PRIVILEGE が必要だと思います。Vista にも変更がありました。ルールについては、 CreateFile のドキュメントの「物理ディスクとボリューム」セクションを参照してください。アカウント権限の編集方法を教えてくれるセキュリティ専門家を見つけるのに最適な場所は、serverfault.com です。

于 2010-05-04T21:57:31.313 に答える