Esempio n. 1
0
        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);
        }
Esempio n. 2
0
            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);
            }