/// <summary>
 ///  The SamrGetDomainPasswordInformation method obtains
 ///  select password policy information (without authenticating
 ///  to the server). Opnum: 56 
 /// </summary>
 /// <param name="BindingHandle">
 ///  An RPC binding handle parameter, as specified in [C706-Ch2Intro].
 /// </param>
 /// <param name="Unused">
 ///  A string value that is unused by the protocol. It is
 ///  ignored by the server. The client MAY clients set this
 ///  value to be the NULL-terminated NETBIOS name of the
 ///  server. set any value.
 /// </param>
 /// <param name="PasswordInformation">
 ///  Password policy information from the account domain.
 /// </param>
 /// <returns>
 /// status of the function call, for example: 0 indicates STATUS_SUCCESS
 /// </returns>
 public int SamrGetDomainPasswordInformation(System.IntPtr BindingHandle,
     _RPC_UNICODE_STRING Unused,
     out _USER_DOMAIN_PASSWORD_INFORMATION PasswordInformation)
 {
     return rpc.SamrGetDomainPasswordInformation(BindingHandle, Unused, out PasswordInformation);
 }
        /// <summary>
        ///  The SamrGetUserDomainPasswordInformation method obtains
        ///  select password policy information (without requiring
        ///  a domain handle). Opnum: 44 
        /// </summary>
        /// <param name="UserHandle">
        ///  An RPC context handle, as specified in section , representing
        ///  a user object.
        /// </param>
        /// <param name="PasswordInformation">
        ///  Password policy information from the user's domain.
        /// </param>
        /// <returns>
        /// status of the function call, for example: 0 indicates STATUS_SUCCESS
        /// </returns>
        public int SamrGetUserDomainPasswordInformation(
            IntPtr UserHandle,
            out _USER_DOMAIN_PASSWORD_INFORMATION PasswordInformation)
        {
            const ushort opnum = 44;
            Int3264[] paramList;
            int retVal = 0;

            paramList = new Int3264[] {
                UserHandle,
                IntPtr.Zero,
                IntPtr.Zero
            };

            using (RpceInt3264Collection outParamList = RpceCall(paramList, opnum))
            {
                PasswordInformation = TypeMarshal.ToStruct<_USER_DOMAIN_PASSWORD_INFORMATION>(outParamList[1]);
                retVal = outParamList[2].ToInt32();
            }

            return retVal;
        }
 /// <summary>
 ///  The SamrGetUserDomainPasswordInformation method obtains
 ///  select password policy information (without requiring
 ///  a domain handle). Opnum: 44 
 /// </summary>
 /// <param name="UserHandle">
 ///  An RPC context handle, as specified in section , representing
 ///  a user object.
 /// </param>
 /// <param name="PasswordInformation">
 ///  Password policy information from the user's domain.
 /// </param>
 /// <returns>
 /// status of the function call, for example: 0 indicates STATUS_SUCCESS
 /// </returns>
 public int SamrGetUserDomainPasswordInformation(System.IntPtr UserHandle,
     out _USER_DOMAIN_PASSWORD_INFORMATION PasswordInformation)
 {
     return rpc.SamrGetUserDomainPasswordInformation(UserHandle, out PasswordInformation);
 }
        /// <summary>
        ///  The SamrGetDomainPasswordInformation method obtains
        ///  select password policy information (without authenticating
        ///  to the server). Opnum: 56 
        /// </summary>
        /// <param name="BindingHandle">
        ///  An RPC binding handle parameter, as specified in [C706-Ch2Intro].
        /// </param>
        /// <param name="Unused">
        ///  A string value that is unused by the protocol. It is
        ///  ignored by the server. The client MAY clients set this
        ///  value to be the NULL-terminated NETBIOS name of the
        ///  server. set any value.
        /// </param>
        /// <param name="PasswordInformation">
        ///  Password policy information from the account domain.
        /// </param>
        /// <returns>
        /// status of the function call, for example: 0 indicates STATUS_SUCCESS
        /// </returns>
        public int SamrGetDomainPasswordInformation(
            System.IntPtr BindingHandle,
            [Indirect()] _RPC_UNICODE_STRING Unused,
            out _USER_DOMAIN_PASSWORD_INFORMATION PasswordInformation)
        {
            const ushort opnum = 56;
            Int3264[] paramList;
            int retVal = 0;

            SafeIntPtr pUnused = TypeMarshal.ToIntPtr(Unused);

            paramList = new Int3264[] {
                pUnused,
                IntPtr.Zero,
                IntPtr.Zero
            };

            try
            {
                using (RpceInt3264Collection outParamList = RpceCall(paramList, opnum))
                {
                    PasswordInformation = TypeMarshal.ToStruct<_USER_DOMAIN_PASSWORD_INFORMATION>(outParamList[1]);
                    retVal = outParamList[2].ToInt32();
                }
            }
            finally
            {
                pUnused.Dispose();
            }

            return retVal;
        }