Pregunta

Estoy tratando de envolver el Secur32.Dll's EnumerateSecurityPackages función que se declara a continuación:

SECURITY_STATUS SEC_Entry EnumerateSecurityPackages(
  __in  PULONG pcPackages,
  __in  PSecPkgInfo *ppPackageInfo
);

Tengo el siguiente código C#, pero obtengo una AccessViolationException cuando intento ejecutarlo. En el depurador, la variable PCPackages se establece correctamente, pero creo que estoy haciendo algo mal con la matriz de Secpkginfos.

[StructLayout(LayoutKind.Sequential)]
public struct SecPkgInfo
{
    public ulong fCapabilities;
    public ushort wVersion;
    public ushort wRPCID;
    public ulong cbMaxToken;
    public string Name;
    public string Comment;
}

[DllImport("Secur32.dll")]
public extern static int EnumerateSecurityPackages(
    ref ulong pcPackages,
    ref SecPkgInfo[] ppPackageInfo
);

///Calling code
ulong count = 0;
SecPkgInfo[] buffer = new SecPkgInfo[256];
EnumerateSecurityPackages(ref count, ref buffer);

¿Alguna idea de lo que estoy haciendo mal?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top