尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

第一种:
调用DLL文件内部函数时,使用的传入参数方式不正确。
譬如:

[DllImport(DLLFileName, EntryPoint = "PMSifGetDefUserGroup")]
        public static extern string PMSifGetDefUserGroup(string TerminatedStringBuffer);

改为

[DllImport(DLLFileName, EntryPoint = "PMSifGetDefUserGroup")]
        public static extern string PMSifGetDefUserGroup(ref string TerminatedStringBuffer);

第二种:调用DLL文件内部函数时,使用的传入参数数量不正确,少传或者多传,或者参数类型不对。
譬如:

[DllImport(DLLFileName, EntryPoint = "PMSifGetDefUserGroup")]
        public static extern string PMSifGetDefUserGroup(ref string TerminatedStringBuffer);

改为

[DllImport(DLLFileName, EntryPoint = "PMSifGetDefUserGroup")]
        public static extern string PMSifGetDefUserGroup(ref string TerminatedStringBuffer, int BufferSize);

这是我目前遇到的,如有其他,请多指教,谢谢

你可能感兴趣的:(查问题)