Laden...

dll import problem

Erstellt von knopper vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.421 Views
K
knopper Themenstarter:in
40 Beiträge seit 2005
vor 18 Jahren
dll import problem

Hallo,

Ich wollte eine Methode in eiiner dll datei in meine C# Pro einbinden.
Beim Ausführen stürzt das ab.

dll funtion header :

DWORD WINAPI
Enumerate(
HANDLE hWDMHandle,
PNDIS_STATUS pNStatus,
PWCHAR pBuffer,
PUINT pBufferSize
)

Einbinden in C#:


			[DllImport("MyAPIdll", SetLastError=true)]
			private static extern unsafe ulong Enumerate (
				IntPtr	g_hPCASIMHandle,					
				ulong*	pNStatus,					
				void*	pBuffer,	
				uint	pBufferSize);
[/CSHAR]

und aufgerufen:

[CSHARP]
byte[] buf = new byte[2024];
uint iBytesRead = 0;
ulong ioResult;
ulong ndis_status;

				unsafe
				{
					// create a void pointer to buf
					fixed (void* pBuffer = buf) 
					{
						ioResult=Enumerate(this.m_iHandle,
							&ndis_status,pBuffer,(uint)buf.Length);	
					}
				}
[/CSHAR]

Weiss jemand vielleicht was falsch gemacht habe ?

gruss
K
knopper Themenstarter:in
40 Beiträge seit 2005
vor 18 Jahren

Hi,

Sorry,
ICh hab es gefunden:
So ist richtig:

[DllImport("MyAPIdll", SetLastError=true)]
private static extern unsafe ulong Enumerate (
IntPtr g_hPCASIMHandle,
ulong* pNStatus,
void* pBuffer,
uint* pBufferSize);
[/CSHAR]

und aufgerufen:


byte[] buf = new byte[2024];
uint iBytesRead = 0;
ulong ioResult;
ulong ndis_status;
uint buffsize;

unsafe
{
// create a void pointer to buf
fixed (void* pBuffer = buf) 
{
ioResult=Enumerate(this.m_iHandle,
&ndis_status,pBuffer,&buffsize); 
}
S
8.746 Beiträge seit 2005
vor 18 Jahren

Schau mal nach

http://www.pinvoke.net/

Da hast du fast die gesamte Win32 als DLLImport inklusive Typdefinitionen als Codeschnipsel. Verwende ich gern und viel.