ich zwei verschiedenen Visual C# DLL erstellt habe, die Verwendung von DeviceIOControl Anrufen tätigen und ich habe sie wie unten definiert:Mit DevicIOControl mit VC#
In erster 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;
};
In zweiter dll:
[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);
Aber jetzt muss ich sie als eine einzige DLL innerhalb der gleichen Klasse machen. Also habe ich versucht das folgende zu benutzen.
[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);
als allgemeine Definition und übergab die Variablen durch Umwandlung von Struktur in Zeichen-Array. Aber der Fahrer nicht wie erwartet
Bitte leite mich mit dem korrekten Verfahren
Was auf der Erde war der Punkt, nicht den Code, der wichtig ist ?? Werfen Sie diesen Code weg, es ist kaputt und völlig unnötig. Die C# -Sprache unterstützt Methodenüberladungen und funktioniert genauso gut, wenn sie über ein Attribut verfügen. –
@HansPassant Hi ... Es funktioniert wie du sagtest Ich habe Methode Überladung verwendet .... Sorry, so dumm zu sein – hazzelnuttie