kernel32

Statt myData mußt du im Aufruf der Funktion natürlich buffer verwenden.

Ich weiß ja nicht was myMBMMem ist, aber vermutlich sollte das eher so aussehen:
Code:
CopyMemoryRead (buffer, myMBMMem, Marshal.SizeOf(myData));

Gruß

PS: Und verwende doch bitte die Code Tags.
 
Also jetzt läuft alles, nur liefert keine Daten nach dem kopieren :(

Code:
private static extern uint CopyMemory ([MarshalAs(UnmanagedType.AsAny)] 
object Destination, IntPtr Source, int Length);

IntPtr file;
IntPtr myMBMMem=IntPtr.Zero;
file=OpenFileMapping(FILE_MAP_READ,false, "TestMemory");
if (file==IntPtr.Zero) 
{
MessageBox.Show("Memory could not be open");
}
else
myMBMMem=MapViewOfFile (file,FILE_MAP_READ,0,0,0);
CopyMemory (myData, myMBMMem, Marshal.SizeOf(myData));
			
MessageBox.Show(myData.strName.ToString());

Beim MessageBox.Show gibt es immer ein Fehler "Object Reference not set to an instanz of object.
 
Zero_Base hat gesagt.:
Beim MessageBox.Show gibt es immer ein Fehler "Object Reference not set to an instanz of object.
Du hast die geschweiften Klammern vergessen. :-(
Code:
if ( file == IntPtr.Zero ) {
	MessageBox.Show( "Memory could not be open" );
}
else {
	myMBMMem = MapViewOfFile ( file, FILE_MAP_READ,0,0,0 );
	CopyMemory ( myData, myMBMMem, Marshal.SizeOf(myData) );		
	MessageBox.Show( myData.strName.ToString() );
}
Debugge das ganze und schau Dir die Struktur genauer an.
War jetzt das Property null oder die Strukur selber?... ;)
Raten können wir nicht.
 

Neue Beiträge

Zurück