[DllImport("mscoree.dll", CharSet=CharSet.Unicode, ExactSpelling=true, PreserveSig=false)]
static extern void GetPermissionRequests(string filename,
out IntPtr minimalBuffer, out int minimalSize,
out IntPtr optionalBuffer, out int optionalSize,
out IntPtr refusedBuffer, out int refusedSize);
Requires manual marshalling of parameters. The Size parameters refer to the length of the buffer in bytes, though the buffers contain Unicode characters.
IntPtr minBuf, optBuf, refBuf;
int minSize, optSize, refSize;
GetPermissionRequests(
@"\path\to\file",
out minBuf, out minSize,
out optBuf, out optSize,
out refBuf, out refSize);
string requestMinimum = Marshal.PtrToStringUni(minBuf, minSize/2);
Console.WriteLine("assembly RequestMinimum: {0}", requestMinimum);
See Shawn Farkas' blog entry at http://blogs.msdn.com/shawnfa/archive/2004/02/24/79598.aspx for sample code to convert the XML string into a SecurityElement, for use by PermissionSet.FromXml.