Question

J'essaye d'envelopper les secur32.dll EnumeratesEcurityPackages fonction qui est déclarée ci-dessous:

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

J'ai le code C # suivant, mais je reçois une conception Accessviolation lorsque j'essaie de l'exécuter. Dans le débogueur, la variable pcpackages est correctement définie, mais je pense que je fais quelque chose de mal avec le tableau 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);

Des idées que je fais de mal?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top