4

残念ながら、C# プログラムを使用して LPT1 ポートにデータを送信しようとしていますが、うまくいきません。Windows 7 x64 を使用しています。x86 と x64 (inpoutx64.dll) の dll の両方を試しました。

送信時のx64 dllを使用:

Output(888, 255);

すべてがうまくいったのでプログラムを続行しますが、マルチメーターには何も表示されません (静的な 0.02V のみ)。

C++で次のことも試しました。

int main () {
int val = 0;
printf("Enter a value\n");
scanf("%d", &val);
_outp(0x378, val);
getchar();
_outp(0x378, 0);
return 0; }

ただし、例外がスローされます。

Unhandled exception at 0x01281428 in ppac.exe: 0xC0000096: Privileged instruction.

xp (C++ コードではなく C#) でこのようなものを作成したことを覚えていますが、win7 でも可能であることを願っています..これで私を助けてください.

ありがとう。

4

1 に答える 1

6

によって使用される意味での IO ポートは_outp、パラレル ポートでやろうとしていることと同じではありません。IO ポートは、さまざまなデバイスへの raw アクセスを取得するプロセッサ レベルの方法です。での IO ポートの使用は、_outpデバイス ドライバーが行うようなものであると想定されています。したがって、適切なカーネル/ユーザー空間の分離 (つまり、Windows NT ベースのもの) を持つのに十分な最新の Windows のすべてのバージョン(つまり、カーネルのみ) で特権が与えられます (つまり、カーネルのみ)。あなたが_outpXP の仕事をしたことがないことはほぼ 100% 確信しています。

ハイレベル コードでパラレル ポートにアクセスするには、 filename を使用して、通常のファイルのように開くだけですLPT1:

于 2010-05-30T22:12:31.510 に答える