VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/VBoxCredProv/VBoxCredential.h@ 26493

最後變更 在這個檔案從26493是 25811,由 vboxsync 提交於 15 年 前

VBoxCredProv: Enabled building by default on OSE (second try).

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 4.7 KB
 
1//
2// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
3// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
4// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
5// PARTICULAR PURPOSE.
6//
7// Modifications (c) 2009 Sun Microsystems, Inc.
8//
9
10#ifndef ___VBoxCredential_h
11#define ___VBoxCredential_h
12
13#include <windows.h>
14#include <strsafe.h>
15#include <shlguid.h>
16#include "helpers.h"
17#include "dll.h"
18#include "resource.h"
19
20class VBoxCredential : public ICredentialProviderCredential
21{
22 public:
23
24 // IUnknown
25 STDMETHOD_(ULONG, AddRef)()
26 {
27 return m_cRef++;
28 }
29
30 STDMETHOD_(ULONG, Release)()
31 {
32 LONG cRef = m_cRef--;
33 if (!cRef)
34 {
35 delete this;
36 }
37 return cRef;
38 }
39
40 STDMETHOD (QueryInterface)(REFIID riid, void** ppv)
41 {
42 HRESULT hr;
43 if (ppv != NULL)
44 {
45 if (IID_IUnknown == riid ||
46 IID_ICredentialProviderCredential == riid)
47 {
48 *ppv = static_cast<IUnknown*>(this);
49 reinterpret_cast<IUnknown*>(*ppv)->AddRef();
50 hr = S_OK;
51 }
52 else
53 {
54 *ppv = NULL;
55 hr = E_NOINTERFACE;
56 }
57 }
58 else
59 {
60 hr = E_INVALIDARG;
61 }
62 return hr;
63 }
64
65 public:
66
67 // ICredentialProviderCredential
68 IFACEMETHODIMP Advise(ICredentialProviderCredentialEvents* pcpce);
69 IFACEMETHODIMP UnAdvise();
70
71 IFACEMETHODIMP SetSelected(BOOL* pbAutoLogon);
72 IFACEMETHODIMP SetDeselected();
73
74 IFACEMETHODIMP GetFieldState(DWORD dwFieldID,
75 CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs,
76 CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis);
77
78 IFACEMETHODIMP GetStringValue(DWORD dwFieldID, PWSTR* ppwsz);
79 IFACEMETHODIMP GetBitmapValue(DWORD dwFieldID, HBITMAP* phbmp);
80 IFACEMETHODIMP GetCheckboxValue(DWORD dwFieldID, BOOL* pbChecked, PWSTR* ppwszLabel);
81 IFACEMETHODIMP GetComboBoxValueCount(DWORD dwFieldID, DWORD* pcItems, DWORD* pdwSelectedItem);
82 IFACEMETHODIMP GetComboBoxValueAt(DWORD dwFieldID, DWORD dwItem, PWSTR* ppwszItem);
83 IFACEMETHODIMP GetSubmitButtonValue(DWORD dwFieldID, DWORD* pdwAdjacentTo);
84
85 IFACEMETHODIMP SetStringValue(DWORD dwFieldID, PCWSTR pwz);
86 IFACEMETHODIMP SetCheckboxValue(DWORD dwFieldID, BOOL bChecked);
87 IFACEMETHODIMP SetComboBoxSelectedValue(DWORD dwFieldID, DWORD dwSelectedItem);
88 IFACEMETHODIMP CommandLinkClicked(DWORD dwFieldID);
89
90 IFACEMETHODIMP GetSerialization(CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE* pcpgsr,
91 CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
92 PWSTR* ppwszOptionalStatusText,
93 CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon);
94 IFACEMETHODIMP ReportResult(NTSTATUS ntsStatus,
95 NTSTATUS ntsSubstatus,
96 PWSTR* ppwszOptionalStatusText,
97 CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon);
98
99 public:
100
101 void Reset();
102
103 HRESULT Initialize(CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
104 const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* rgcpfd,
105 const FIELD_STATE_PAIR* rgfsp);
106
107 int Update(const char *pszUser,
108 const char *pszPw,
109 const char *pszDomain);
110
111 VBoxCredential();
112
113 virtual ~VBoxCredential();
114
115 private:
116
117 LONG m_cRef;
118 CREDENTIAL_PROVIDER_USAGE_SCENARIO m_cpUS; /* The usage scenario for which we were enumerated */
119 CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR m_rgCredProvFieldDescriptors[SFI_NUM_FIELDS]; /* Holding type and name of each field in the tile */
120 FIELD_STATE_PAIR m_rgFieldStatePairs[SFI_NUM_FIELDS]; /* Holding state of each field in the tile */
121 PWSTR m_rgFieldStrings[SFI_NUM_FIELDS]; /* Holding string value of each field. This is different from the name of
122 * the field held in m_rgCredProvFieldDescriptors */
123 ICredentialProviderCredentialEvents *m_pCredProvCredentialEvents;
124
125};
126
127#endif /* ___VBoxCredential_h */
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette