//********************************************************************* //* Microsoft Windows ** //* Copyright(c) Microsoft Corp., 1999 ** //********************************************************************* // // USERINFO.H - Header for the implementation of CUserInfo // // HISTORY: // // 1/27/99 a-jaswed Created. // #ifndef _USERINFO_H_ #define _USERINFO_H_ #include #include #include #include #include "util.h" typedef struct tag_REGDATAELEMENT { LPCWSTR lpQueryElementName; // Static name to put in query string LPWSTR lpQueryElementValue; // data for element DWORD dwValidateFlag; // validation bit flag for this element }REGDATAELEMENT, *LPREGDATAELEMENT; // "IdentityXXX" where XXX is 3 digit integer const USHORT IDENTITY_REGVALUE_LEN_MAX = 12; // Maximum length for data in an identity // const USHORT IDENTITY_CCH_MAX = UNLEN; typedef struct tag_IDENTITYELEMENT { WCHAR rgchRegValue[IDENTITY_REGVALUE_LEN_MAX]; WCHAR rgchIdentity[IDENTITY_CCH_MAX + 1]; } IDENTITYELEMENT; class CUserInfo : public IDispatch { public: const static USHORT IDENTITIES_MAX = 6; const static USHORT RESERVED_IDENTITIES_MAX = 2; const static int RESERVED_IDENTITIES_IDS[RESERVED_IDENTITIES_MAX]; private: HINSTANCE m_hInstance; ULONG m_cRef; DWORD m_dwCountryCode; WCHAR m_szUserInfoINIFile [MAX_PATH]; // BUGBUG: Do all these buffers really need to be MAX_PATH characters?? // Registration data WCHAR m_szFirstName [MAX_PATH]; WCHAR m_szMiddleInitial [MAX_PATH]; WCHAR m_szLastName [MAX_PATH]; WCHAR m_szFuriganaName [MAX_PATH]; WCHAR m_szCompanyName [MAX_PATH]; WCHAR m_szAddress1 [MAX_PATH*2]; WCHAR m_szAddress2 [MAX_PATH*2]; WCHAR m_szCity [MAX_PATH]; WCHAR m_szState [MAX_PATH]; WCHAR m_szZip [MAX_PATH]; WCHAR m_szCountry [MAX_PATH]; WCHAR m_szPrimaryEmail [MAX_PATH]; WCHAR m_szSecondaryEmail [MAX_PATH]; WCHAR m_szAreaCode [MAX_PATH]; WCHAR m_szPhoneNumber [MAX_PATH]; VARIANT_BOOL m_fMSUpdate; VARIANT_BOOL m_fMSOffer; VARIANT_BOOL m_fOtherOffer; DWORD m_dwCountryID; LPREGDATAELEMENT m_RegDataElements; // New user accounts WCHAR m_szOwnerName[MAX_PATH]; VARIANT_BOOL m_fOEMIdentities; VARIANT_BOOL m_fUseIdentities; IDENTITYELEMENT m_rgIdentities[IDENTITIES_MAX]; TCHAR m_szReservedIdentities[RESERVED_IDENTITIES_MAX][MAX_PATH]; WCHAR m_szDefaultNewUser[MAX_PATH]; //GET functions HRESULT get_FuriganaName (BSTR* pbstrVal); HRESULT get_SecondaryEmail (BSTR* pbstrVal); HRESULT get_AreaCode (BSTR* pbstrVal); HRESULT get_PhoneNumber (BSTR* pbstrVal); //SET functions HRESULT set_FirstName (WCHAR* pszVal); HRESULT set_MiddleInitial (WCHAR* pszVal); HRESULT set_LastName (WCHAR* pszVal); HRESULT set_CompanyName (WCHAR* pszVal); HRESULT set_Address1 (WCHAR* pszVal); HRESULT set_Address2 (WCHAR* pszVal); HRESULT set_City (WCHAR* pszVal); HRESULT set_State (WCHAR* pszVal); HRESULT set_Zip (WCHAR* pszVal); HRESULT set_Country (WCHAR* pszVal); HRESULT set_PrimaryEmail (WCHAR* pszVal); HRESULT set_SecondaryEmail (WCHAR* pszVal); HRESULT set_AreaCode (WCHAR* pszVal); HRESULT set_PhoneNumber (WCHAR* pszVal); HRESULT set_FuriganaName (WCHAR* pszVal); HRESULT set_OwnerName (WCHAR* pszVal); HRESULT set_Identity (UINT uiIndex, WCHAR* pszVal); HRESULT set_UseIdentities (VARIANT_BOOL fVal); HRESULT set_MSUpdate (VARIANT_BOOL fVal); HRESULT set_MSOffer (VARIANT_BOOL fVal); HRESULT set_OtherOffer (VARIANT_BOOL fVal); HRESULT set_CountryID (DWORD dwVal); // CHECK functions HRESULT check_Identity (UINT uiIndex, VARIANT_BOOL* pfValid); HRESULT check_Identity (WCHAR* pszVal, VARIANT_BOOL* pfValid); STDMETHOD(SuggestIdentity0)(); void ReadUserInfo (HKEY hKey, WCHAR* pszKey, WCHAR* pszValue, DWORD dwSize); void WriteUserInfo (WCHAR* pszBuf, WCHAR* pszKey, WCHAR* pszValue); void FixString (BSTR bstrVal); public: CUserInfo (HINSTANCE hInstance); ~CUserInfo (); HRESULT GetQueryString (BSTR bstrBaseURL, BSTR *lpReturnURL); //Public GET functions HRESULT get_FirstName (BSTR* pbstrVal); HRESULT get_MiddleInitial (BSTR* pbstrVal); HRESULT get_LastName (BSTR* pbstrVal); HRESULT get_Address1 (BSTR* pbstrVal); HRESULT get_Address2 (BSTR* pbstrVal); HRESULT get_City (BSTR* pbstrVal); HRESULT get_State (BSTR* pbstrVal); HRESULT get_Zip (BSTR* pbstrVal); HRESULT get_Country (BSTR* pbstrVal); HRESULT get_PrimaryEmail (BSTR* pbstrVal); HRESULT get_CompanyName (BSTR* pbstrVal); HRESULT set_CountryCode (DWORD dwCountryCd); HRESULT get_OwnerName (BSTR* pbstrVal); HRESULT get_Identity (UINT uiIndex, BSTR* pbstrVal); HRESULT get_UseIdentities (VARIANT_BOOL* pfVal); HRESULT get_MSUpdate (VARIANT_BOOL* pfVal); HRESULT get_MSOffer (VARIANT_BOOL* pfVal); HRESULT get_OtherOffer (VARIANT_BOOL* pfVal); HRESULT get_CountryID (DWORD* pdwVal); HRESULT get_OEMIdentities (VARIANT_BOOL* pfVal){ *pfVal = m_fOEMIdentities; return S_OK; } HRESULT get_IdentitiesMax (SHORT* uiMax){ *uiMax = IDENTITIES_MAX; return S_OK; } HRESULT get_Identities (PSTRINGLIST* pUserList); HRESULT set_DefaultNewUser (WCHAR * pszVal); HRESULT get_DefaultNewUser (BSTR* pszVal); // IUnknown Interfaces STDMETHODIMP QueryInterface (REFIID riid, LPVOID* ppvObj); STDMETHODIMP_(ULONG) AddRef (); STDMETHODIMP_(ULONG) Release (); //IDispatch Interfaces STDMETHOD (GetTypeInfoCount) (UINT* pcInfo); STDMETHOD (GetTypeInfo) (UINT, LCID, ITypeInfo** ); STDMETHOD (GetIDsOfNames) (REFIID, OLECHAR**, UINT, LCID, DISPID* ); STDMETHOD (Invoke) (DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexcepinfo, UINT* puArgErr); }; #endif