Domanda

Sto cercando di avvolgere i secur32.dll Enumeratesecuritypackages funzione che viene dichiarata di seguito:

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

Ho il seguente codice C#, ma ricevo un AccessViolationException quando provo a eseguirlo. Nel debugger la variabile PCPACKAGES viene impostata correttamente, ma penso che sto facendo qualcosa di sbagliato nella serie di 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);

Qualche idea su cosa sto facendo di sbagliato?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top