Je veux adresser le port 0xE020 (Hex -> Dec = 57.376), mais il est hors limites pour un court. Maintenant, j'ai besoin de cela pour tester les ports parallèles d'extension PCI-E.Est-il possible d'adresser des ports élevés avec Inpout32.dll?
Merci à la réponse à cette question (https://stackoverflow.com/a/4618383/3391678) j'utilise le code de travail suivant pour 32 environnements de bits:
using System;
using System.Runtime.InteropServices;
namespace LPTx86
{
public class LPT
{
//inpout.dll
[DllImport("inpout32.dll")]
private static extern void Out32(short PortAddress, short Data);
[DllImport("inpout32.dll")]
private static extern char Inp32(short PortAddress);
private short _PortAddress;
public LPT(short PortAddress)
{
_PortAddress = PortAddress;
}
public void Write(short Data)
{
Out32(_PortAddress, Data);
}
public byte Read()
{
return (byte)Inp32(_PortAddress);
}
}
}
Et pour 64 environnements de bits:
using System;
using System.Runtime.InteropServices;
namespace LPTx64
{
class LPT
{
[DllImport("inpoutx64.dll", EntryPoint = "Out32")]
private static extern void Out32_x64(short PortAddress, short Data);
[DllImport("inpoutx64.dll", EntryPoint = "Inp32")]
private static extern char Inp32_x64(short PortAddress);
private short _PortAddress;
public LPT64(short PortAddress)
{
_PortAddress = PortAddress;
}
public void Write(short Data)
{
Out32_x64(_PortAddress, Data);
}
public byte Read()
{
return (byte)Inp32_x64(_PortAddress);
}
}
}
(Oui, j'ai enlevé Est-il possible et comment puis-je adresser les ports qui ne correspondent pas à un court-métrage?
Utiliser 'ushort' pour obtenir ah ead, le numéro de port n'est pas une valeur signée. –
J'ai regardé dans les fichiers d'en-tête et oui, c'est ushort, je ferais mieux de corriger cela avant que quelque chose ne se brise ... –