180 lines
6.8 KiB
C++
180 lines
6.8 KiB
C++
//*********************************************************************
|
|
//* 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 <windows.h>
|
|
#include <assert.h>
|
|
#include <oleauto.h>
|
|
#include <lmcons.h>
|
|
#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
|
|
|