public int Advise(ICredentialProviderEvents pcpe, IntPtr upAdviseContext)
        {
            Events        = pcpe;
            AdviseContext = upAdviseContext;

            Initialize();

            Marshal.AddRef(Marshal.GetIUnknownForObject(Events));

            return(HRESULT.S_OK);
        }
        /// <summary>
        /// Used by the Logon UI or Credential UI to advise the credential provider that event callbacks are no longer accepted.
        /// </summary>
        /// <returns><see cref="HRESULT"/></returns>
        public virtual int UnAdvise()
        {
            Logger.Write();

            if (events != null)
            {
                //Marshal.Release(Marshal.GetIUnknownForObject(events));
                events = null;
            }

            return(HRESULT.S_OK);
        }
        public int Advise(ICredentialProviderEvents pcpe, uint upAdviseContext)
        {
            Log.LogMethodCall();

            if (pcpe != null)
            {
                credentialProviderEvents = pcpe;
                var intPtr = Marshal.GetIUnknownForObject(pcpe);
                Marshal.AddRef(intPtr);
            }

            return(HResultValues.S_OK);
        }
        public int UnAdvise()
        {
            Log.Debug("UnAdvise()");

            if (events != null)
            {
                Marshal.Release(Marshal.GetIUnknownForObject(events));
                events        = null;
                eventsContext = 0;
            }

            return(0);
        }
        public int Advise(ICredentialProviderEvents pcpe, ulong upAdviseContext)
        {
            Log.Debug("Advise({pcpe}, {upAdviseContext})", pcpe, upAdviseContext);

            if (pcpe != null)
            {
                events        = pcpe;
                eventsContext = upAdviseContext;
                Marshal.AddRef(Marshal.GetIUnknownForObject(events));
            }

            return(0);
        }
        /// <summary>
        /// Allows a credential provider to initiate events in the Logon UI or Credential UI through a callback interface.
        /// <inheritdoc path="https://docs.microsoft.com/en-us/windows/win32/api/credentialprovider/nf-credentialprovider-icredentialprovider-advise"/>
        /// </summary>
        /// <param name="pcpe">A pointer to an <see cref="ICredentialProviderEvents"/> callback interface to be used as the notification mechanism.</param>
        /// <param name="upAdviseContext">A pointer to an <see cref="ICredentialProviderEvents"/> callback interface to be used as the notification mechanism.</param>
        /// <returns><see cref="HRESULT"/></returns>
        public virtual int Advise(ICredentialProviderEvents pcpe, ulong upAdviseContext)
        {
            Logger.Write($"upAdviseContext: {upAdviseContext}");

            if (pcpe != null)
            {
                events = pcpe;

                Marshal.AddRef(Marshal.GetIUnknownForObject(pcpe));
            }

            return(HRESULT.S_OK);
        }
Esempio n. 7
0
        public int UnAdvise()
        {
            Log.LogMethodCall();

            if (CredentialProviderEvents != null)
            {
                var intPtr = Marshal.GetIUnknownForObject(CredentialProviderEvents);
                Marshal.Release(intPtr);
                CredentialProviderEvents = null;
                CredentialProviderEventsAdviseContext = 0;
            }

            return(HResultValues.S_OK);
        }
        public int UnAdvise()
        {
            Log.LogMethodCall();

            if (credentialProviderEvents != null)
            {
                var intPtr = Marshal.GetIUnknownForObject(credentialProviderEvents);
                Marshal.Release(intPtr);
                credentialProviderEvents = null;
            }

            // TODO: clean up memory

            return(HResultValues.S_OK);
        }
 public TimerOnDemandLogon(
     ICredentialProviderEvents credentialProviderEvents,
     ICredentialProviderCredentialEvents credentialProviderCredentialEvents,
     ICredentialProviderCredential credentialProviderCredential,
     uint textFieldId,
     uint adviceContext  // void*
     )
 {
     this.credentialProviderEvents           = credentialProviderEvents;
     this.credentialProviderCredentialEvents = credentialProviderCredentialEvents;
     this.credentialProviderCredential       = credentialProviderCredential;
     this.textFieldId   = textFieldId;
     this.adviceContext = adviceContext;
     timer = new Timer(TimerCallback, this, TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(1));
 }
 public virtual extern int Advise([MarshalAs(UnmanagedType.Interface)][In] ICredentialProviderEvents pcpe, IntPtr upAdviseContext);