public object MarshalNativeToManaged(IntPtr pNativeData) { if (pNativeData == IntPtr.Zero) { return(null); } NATIVECREDENTIAL lRawCredential = (NATIVECREDENTIAL)Marshal.PtrToStructure(pNativeData, typeof(NATIVECREDENTIAL)); Credential lCredential = new Credential() { UserName = lRawCredential.UserName, TargetName = lRawCredential.TargetName, TargetAlias = lRawCredential.TargetAlias, Persist = lRawCredential.Persist, Comment = lRawCredential.Comment, Flags = lRawCredential.Flags, LastWritten = lRawCredential.LastWritten, Type = lRawCredential.Type, CredentialBlob = new byte[lRawCredential.CredentialBlobSize], Attributes = new CREDENTIAL_ATTRIBUTE[lRawCredential.AttributeCount] }; Marshal.Copy(lRawCredential.CredentialBlob, lCredential.CredentialBlob, 0, (int)lRawCredential.CredentialBlobSize); return(lCredential); }
public IntPtr MarshalManagedToNative(object obj) { PSCredential credential; PSObject credo = obj as PSObject; if (credo != null) { credential = credo.BaseObject as PSCredential; } else { credential = obj as PSCredential; } if (credential == null) { Console.WriteLine("Error: Can't convert!"); return IntPtr.Zero; } var nCred = new NATIVECREDENTIAL() { UserName = credential.UserName, CredentialBlob = Marshal.SecureStringToCoTaskMemUnicode(credential.Password), CredentialBlobSize = (uint)credential.Password.Length * 2, TargetName = "MicrosoftPowerShell:user="******"Target": if (m.Value != null) nCred.TargetName = m.Value.ToString(); break; case "TargetAlias": if (m.Value != null) nCred.TargetAlias = m.Value.ToString(); break; case "Type": if (m.Value != null) nCred.Type = (CredentialType)m.Value; break; case "Persistence": if (m.Value != null) nCred.Persist = (PersistanceType)m.Value; break; case "Description": if (m.Value != null) nCred.Comment = m.Value.ToString(); break; case "LastWriteTime": // ignored break; } } } IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(nCred)); Marshal.StructureToPtr(nCred, ptr, false); return ptr; }
public IntPtr MarshalManagedToNative(object obj) { PSCredential credential; PSObject credo = obj as PSObject; if (credo != null) { credential = credo.BaseObject as PSCredential; } else { credential = obj as PSCredential; } if (credential == null) { Console.WriteLine("Error: Can't convert!"); return(IntPtr.Zero); } var nCred = new NATIVECREDENTIAL() { UserName = credential.UserName, CredentialBlob = Marshal.SecureStringToCoTaskMemUnicode(credential.Password), CredentialBlobSize = (uint)credential.Password.Length * 2, TargetName = "MicrosoftPowerShell:user="******"Target": if (m.Value != null) { nCred.TargetName = m.Value.ToString(); } break; case "TargetAlias": if (m.Value != null) { nCred.TargetAlias = m.Value.ToString(); } break; case "Type": if (m.Value != null) { nCred.Type = (CredentialType)m.Value; } break; case "Persistence": if (m.Value != null) { nCred.Persist = (PersistanceType)m.Value; } break; case "Description": if (m.Value != null) { nCred.Comment = m.Value.ToString(); } break; case "LastWriteTime": // ignored break; } } } IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(nCred)); Marshal.StructureToPtr(nCred, ptr, false); return(ptr); }