SecurityPermission per Marshal::WriteInt32

sabato 08 dicembre 2007 - 10.03

JohnAsh Profilo | Junior Member

Ciao a tutti,

ho un problema nell'utilizzo del metodo WriteInt32 della classe Marshal.
Premetto che il codice in questione, se può essere utile, è contenuto in una DLL.
Ho un metodo che alloca tramite AllocHGlobal una cera quantità di bytes ricavandone il puntatore (IntPtr). Successivamente, nel momento in cui tento di scrivere nella memoria referenziata dal puntatore, un numero utilizzando WriteInt32, mi viene restituita un'eccezione AccessViolationException.
Ho consultato quindi le pagine MSDN relative al metodo WriteInt32 ed ho visto che questo metodo richiede che siano settati degli attributi di sicurezza (SecurityPermissionAttribute del namespace System::Security::Permissions).
Nello specifico, viene richiesto l'attribute LinkDemand, quindi utilizzando gli esempi sempre di MSDN ho modificato il mio codice in questo modo:

public: System::Void MetodoCheRichiedePermessi(void) { ..... Marshal::WriteInt32(mioPtr, 20); .... } [SecurityPermissionAttribute(SecurityAction::LinkDemand, UnmanagedCode = true)] //errore qui public: System::Void MetodoChiamante(void) { // errore qui MetodoCheRichiedePermessi(); }

Il problema è che quando compilo mi vengono restituiti questi errori:

error C2440: '=': impossibile convertire da 'bool' a 'System::Security::Permissions::SecurityPermissionFlag'

error C2334: token imprevisti prima di ':'. Il corpo apparente della funzione verrà ignorato.

error C2059: errore di sintassi: 'public'

Su google ho trovato ben poco, o meglio, l'argomento è molto trattato ma gli esempi sono in VB, io sto utilizzando VC++ e non riesco in nessun modo a convertire il codice.

Qualcuno ha già avuto questo problema? Oppure può indicarmi un modo per risolvere?
E' molto urgente, vi ringrazio in anticipo.

Saluti!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5