/*++ Copyright (c) 1995 Microsoft Corporation Module Name: paper.h Abstract: Paper certificate dialog prototype. Author: Jeff Parham (jeffparh) 13-Dec-1995 Revision History: --*/ // constrained by number of bits allowed for it in KeyCode (see below) #define MAX_NUM_LICENSES ( 4095 ) // XOR mask for key code value; this is so that the high bits that are // usually set for the key code need not be entered -- they only need // be entered if the high bits are _not_ set #define KEY_CODE_MASK ( 0xF0000000 ) class CPaperSourceDlg : public CDialog { // Construction public: CPaperSourceDlg(CWnd* pParent = NULL); // standard constructor ~CPaperSourceDlg(); DWORD CertificateEnter( LPCSTR pszServerName, LPCSTR pszProductName, LPCSTR pszVendor, DWORD dwFlags ); DWORD CertificateRemove( LPCSTR pszServerName, DWORD dwFlags, PLLS_LICENSE_INFO_1 pLicenseInfo ); BOOL ConnectServer(); BOOL ConnectEnterprise(); NTSTATUS ConnectTo( BOOL bUseEnterprise, CString strServerName, PLLS_HANDLE phLls ); void AbortDialogIfNecessary(); void GetProductList(); DWORD ComputeActivationCode(); NTSTATUS AddLicense(); BOOL m_bProductListRetrieved; DWORD m_dwEnterFlags; CString m_strServerName; LLS_HANDLE m_hLls; LLS_HANDLE m_hEnterpriseLls; // KeyCode format: // // 31....................................0 // | 2 | 2 | 16 | 12 | // A B C D // // ModesAllowed = A // Bit field: bit 0 = allow per seat // bit 1 = allow per server // // FlipsAllowed = B // Bit field: bit 0 = allow flip from per seat // bit 1 = allow flip from per server // (THIS IS CURRENTLY UNIMPLEMENTED.) // // ExpirationDate = C // Bit field: bits 0-6 = years since 1980 // bits 7-10 = month (1-12) // bits 11-15 = day (1-31) // // NumLicenses = D DWORD KeyCodeToNumLicenses( DWORD dwKeyCode ); DWORD KeyCodeToFlipsAllowed( DWORD dwKeyCode ); DWORD KeyCodeToModesAllowed( DWORD dwKeyCode ); DWORD KeyCodeToExpirationDate( DWORD dwKeyCode ); // Dialog Data //{{AFX_DATA(CPaperSourceDlg) enum { IDD = IDD_CERT_SOURCE_PAPER }; CSpinButtonCtrl m_spinLicenses; CComboBox m_cboxProductName; CString m_strActivationCode; CString m_strKeyCode; CString m_strSerialNumber; CString m_strVendor; CString m_strProductName; CString m_strComment; int m_nDontInstallAllLicenses; int m_nLicenses; int m_nLicenseMode; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CPaperSourceDlg) public: virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT); protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: void EnableOrDisableOK(); // Generated message map functions //{{AFX_MSG(CPaperSourceDlg) afx_msg void OnUpdateActivationCode(); afx_msg void OnUpdateKeyCode(); afx_msg void OnUpdateVendor(); virtual BOOL OnInitDialog(); virtual void OnOK(); afx_msg void OnUpdateSerialNumber(); afx_msg void OnUpdateProductName(); afx_msg void OnDropDownProductName(); afx_msg void OnHelp(); afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo); afx_msg void OnDestroy(); afx_msg void OnAllLicenses(); afx_msg void OnSomeLicenses(); afx_msg void OnDeltaPosSpinLicenses(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; /////////////////////////////////// inline DWORD CPaperSourceDlg::KeyCodeToNumLicenses( DWORD dwKeyCode ) { return ( dwKeyCode & 0x00000FFF ); } inline DWORD CPaperSourceDlg::KeyCodeToModesAllowed( DWORD dwKeyCode ) { return ( dwKeyCode >> 30 ); } inline DWORD CPaperSourceDlg::KeyCodeToFlipsAllowed( DWORD dwKeyCode ) { return ( ( dwKeyCode >> 28 ) & 0x3 ); }