2016-03-28 2 views
0

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

+1

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. –

+0

@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

Répondre

0

surcharge de la méthode juste travaillé comme @Hans Passant souligné

Cela signifie que je peux utiliser les deux définitions en une seule La surcharge du fichier .cs et de la méthode prend effet, ce qui permet d'utiliser la même fonction avec différents paramètres