J'ai créé deux différentes dll Visual C# de qui utilisent des appels DeviceIOControl et je les ai définis comme ci-dessous:En utilisant DevicIOControl avec VC#
En premier dll:
[DllImport("kernel32.dll", SetLastError = true)]
static extern BOOL DeviceIoControl(
HANDLE hDevice,
DWORD dwIoControlCode,
ref Internal_COMMAND lpInBuffer,
DWORD nInBufferSize,
ref ulong lpOutBuffer,
DWORD nOutBufferSize,
ref DWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped);
public struct Internal_COMMAND
{
public ulong Address;
public ulong Command;
};
En deuxième dll:
Mais maintenant je dois les faire comme une seule DLL dans la même classe. J'ai donc essayé d'utiliser le ci-dessous. Comme définition commune et passé les variables en convertissant la structure en tableau de caractères.[DllImport("kernel32.dll", SetLastError = true)]
static extern BOOL DeviceIoControl(
HANDLE hDevice,
DWORD dwIoControlCode,
ref char[] lpInBuffer,
DWORD nInBufferSize,
ref char[] lpOutBuffer,
DWORD nOutBufferSize,
ref DWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped);
Mais le conducteur ne fonctionne pas comme prévu
S'il vous plaît me guider avec la procédure à suivre
Qu'est-ce qui était sur le point de ne pas afficher le code qui compte? Jetez ce code, il est cassé et complètement inutile. Le langage C# supporte les surcharges de méthodes, fonctionne aussi bien quand ils ont un attribut. –
@HansPassant Hi ... Il fonctionne comme vous l'avez dit j'ai utilisé la surcharge de la méthode .... Désolé d'être si bête – hazzelnuttie