You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
5.5 KiB
218 lines
5.5 KiB
/**********************************************************************/
|
|
/** Microsoft Windows/NT **/
|
|
/** Copyright(c) Microsoft Corporation, 1997 - 1999 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
ClassMod.h
|
|
This file contains all of the prototypes for the
|
|
option class modification dialog.
|
|
|
|
FILE HISTORY:
|
|
|
|
*/
|
|
|
|
#if !defined _CLASSMOD_H
|
|
#define _CLASSMOD_H
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
#if !defined _CLASSED_H
|
|
#include "classed.h"
|
|
#endif
|
|
|
|
#define CLASS_TYPE_VENDOR 0
|
|
#define CLASS_TYPE_USER 1
|
|
|
|
// CWnd based control for hex editor
|
|
class CWndHexEdit : public CWnd
|
|
{
|
|
DECLARE_DYNAMIC(CWndHexEdit)
|
|
|
|
protected:
|
|
static WNDPROC m_wproc_super ;
|
|
static BOOL m_b_inited ;
|
|
|
|
public:
|
|
|
|
CWndHexEdit () ;
|
|
~ CWndHexEdit () ;
|
|
|
|
BOOL Create(LPCTSTR lpszText,
|
|
DWORD dwStyle,
|
|
const RECT& rect,
|
|
CWnd* pParentWnd,
|
|
UINT nID = 0xffff
|
|
);
|
|
|
|
WNDPROC * GetSuperWndProcAddr() ;
|
|
|
|
// One-shot initialization
|
|
static BOOL CreateWindowClass ( HINSTANCE hInstance );
|
|
};
|
|
|
|
class CClassInfo
|
|
{
|
|
public:
|
|
CClassInfo() {};
|
|
CClassInfo(CClassInfo & classInfo)
|
|
{
|
|
*this = classInfo;
|
|
}
|
|
|
|
CClassInfo & operator = (const CClassInfo & ClassInfo)
|
|
{
|
|
strName = ClassInfo.strName;
|
|
strComment = ClassInfo.strComment;
|
|
bIsVendor = ClassInfo.bIsVendor;
|
|
|
|
baData.RemoveAll();
|
|
baData.Copy(ClassInfo.baData);
|
|
|
|
return *this;
|
|
}
|
|
|
|
BOOL IsDynBootpClass()
|
|
{
|
|
BOOL fResult = FALSE;
|
|
|
|
if (baData.GetSize() == (int) strlen(DHCP_BOOTP_CLASS_TXT))
|
|
{
|
|
// now mem compare
|
|
if (memcmp(baData.GetData(), DHCP_BOOTP_CLASS_TXT, (size_t)baData.GetSize()) == 0)
|
|
{
|
|
// found it!
|
|
fResult = TRUE;
|
|
}
|
|
}
|
|
|
|
return fResult;
|
|
}
|
|
|
|
BOOL IsRRASClass()
|
|
{
|
|
BOOL fResult = FALSE;
|
|
|
|
if (baData.GetSize() == (int) strlen(DHCP_RAS_CLASS_TXT))
|
|
{
|
|
// now mem compare
|
|
if (memcmp(baData.GetData(), DHCP_RAS_CLASS_TXT, (size_t)baData.GetSize()) == 0)
|
|
{
|
|
// found it!
|
|
fResult = TRUE;
|
|
}
|
|
}
|
|
|
|
return fResult;
|
|
}
|
|
|
|
BOOL IsSystemClass()
|
|
{
|
|
BOOL fResult = FALSE;
|
|
|
|
// check to see if this is one of the default clasess, if so disable
|
|
if ( ((size_t) baData.GetSize() == strlen(DHCP_MSFT50_CLASS_TXT)) ||
|
|
((size_t) baData.GetSize() == strlen(DHCP_MSFT98_CLASS_TXT)) ||
|
|
((size_t) baData.GetSize() == strlen(DHCP_MSFT_CLASS_TXT)) )
|
|
{
|
|
if ( (memcmp(baData.GetData(), DHCP_MSFT50_CLASS_TXT, (size_t)baData.GetSize()) == 0) ||
|
|
(memcmp(baData.GetData(), DHCP_MSFT98_CLASS_TXT, (size_t)baData.GetSize()) == 0) ||
|
|
(memcmp(baData.GetData(), DHCP_MSFT_CLASS_TXT, (size_t)baData.GetSize()) == 0) )
|
|
{
|
|
fResult = TRUE;
|
|
}
|
|
}
|
|
|
|
return fResult;
|
|
}
|
|
|
|
|
|
public:
|
|
CString strName;
|
|
CString strComment;
|
|
BOOL bIsVendor;
|
|
CByteArray baData;
|
|
};
|
|
|
|
typedef CArray<CClassInfo, CClassInfo&> CClassInfoArrayBase;
|
|
|
|
class CClassInfoArray : public CClassInfoArrayBase
|
|
{
|
|
public:
|
|
CClassInfoArray();
|
|
~CClassInfoArray();
|
|
|
|
DWORD RefreshData(LPCTSTR pServer);
|
|
BOOL RemoveClass(LPCTSTR pClassName);
|
|
DWORD ModifyClass(LPCTSTR pServer, CClassInfo & ClassInfo);
|
|
DWORD AddClass(LPCTSTR pServer, CClassInfo & ClassInfo);
|
|
BOOL IsValidClass(LPCTSTR pClassName);
|
|
};
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDhcpModifyClass dialog
|
|
|
|
class CDhcpModifyClass : public CBaseDialog
|
|
{
|
|
// Construction
|
|
public:
|
|
CDhcpModifyClass(CClassInfoArray * pClassArray, LPCTSTR pszServer, BOOL bCreate, DWORD dwType, CWnd* pParent = NULL); // standard constructor
|
|
|
|
// Dialog Data
|
|
//{{AFX_DATA(CDhcpModifyClass)
|
|
enum { IDD = IDD_CLASSID_NEW };
|
|
// NOTE: the ClassWizard will add data members here
|
|
//}}AFX_DATA
|
|
|
|
CWndHexEdit m_hexData; // Hex Data
|
|
|
|
virtual DWORD * GetHelpMap() { return DhcpGetHelpMap(CDhcpModifyClass::IDD); }
|
|
|
|
// Overrides
|
|
// ClassWizard generated virtual function overrides
|
|
//{{AFX_VIRTUAL(CDhcpModifyClass)
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
//}}AFX_VIRTUAL
|
|
|
|
// Implementation
|
|
protected:
|
|
|
|
// Generated message map functions
|
|
//{{AFX_MSG(CDhcpModifyClass)
|
|
virtual BOOL OnInitDialog();
|
|
afx_msg void OnChangeValuename();
|
|
afx_msg void OnChangeValuecomment();
|
|
virtual void OnOK();
|
|
//}}AFX_MSG
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
afx_msg void OnChangeValueData();
|
|
|
|
void SetDirty(BOOL bDirty) { m_bDirty = bDirty; }
|
|
|
|
public:
|
|
EDITVALUEPARAM m_EditValueParam;
|
|
|
|
protected:
|
|
HEXEDITDATA * m_pHexEditData;
|
|
CString m_strName;
|
|
CString m_strComment;
|
|
BYTE m_buffer[MAXDATA_LENGTH];
|
|
|
|
DWORD m_dwType;
|
|
|
|
CClassInfoArray * m_pClassInfoArray;
|
|
CString m_strServer;
|
|
|
|
BOOL m_bDirty;
|
|
BOOL m_bCreate; // are we creating or modifing a class
|
|
};
|
|
|
|
//{{AFX_INSERT_LOCATION}}
|
|
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
|
|
|
#endif // !defined(AFX_CLASSMOD_H__3995264F_96A1_11D1_93E0_00C04FC3357A__INCLUDED_)
|