GetPermissionRequests (mscorsn)
Last changed: -66.7.99.222

.
Summary
Reads permission requests from an assembly manifest.

C# Signature:

[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);

Notes:

Requires manual marshalling of parameters. The Size parameters refer to the length of the buffer in bytes, though the buffers contain Unicode characters.

Sample Code:

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);

Tips:

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.