mirror of https://github.com/tongzx/nt5src
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.
125 lines
2.7 KiB
125 lines
2.7 KiB
// Implementation of class CFileNode
|
|
//
|
|
// During parsing an inf file, information about each file
|
|
// is stored in an instance of this class. Such information
|
|
// includes the name of the file, its section in the inf file,
|
|
// its location (directory), etc.
|
|
|
|
#include "filenode.h"
|
|
|
|
CPNode::CPNode(LPCTSTR szName)
|
|
{
|
|
Assert (szName != NULL);
|
|
lstrcpyn(m_szName, szName, MAX_PATH);
|
|
m_pNext = NULL;
|
|
m_bRemovable = FALSE;
|
|
}
|
|
|
|
CPNode::~CPNode()
|
|
{
|
|
if (m_pNext != NULL)
|
|
delete m_pNext;
|
|
}
|
|
|
|
// insert a new file node into list
|
|
//HRESULT CFileNode::Insert(LPCTSTR szName, LPCTSTR szSection)
|
|
HRESULT CPNode::Insert(CPNode* pNewNode)
|
|
{
|
|
if (pNewNode == NULL)
|
|
return HRESULT_FROM_WIN32(ERROR_BAD_ARGUMENTS);
|
|
|
|
m_pNext = pNewNode;
|
|
return S_OK;
|
|
}
|
|
|
|
// get the file node placed right after this one in list
|
|
CPNode* CPNode::GetNext() const
|
|
{
|
|
return m_pNext;
|
|
}
|
|
|
|
// tell the path in which this file is located
|
|
HRESULT CPNode::SetStr(LPTSTR lpszMember, LPCTSTR lpszNew )
|
|
{
|
|
Assert (lpszNew != NULL);
|
|
if (lpszNew == NULL)
|
|
return HRESULT_FROM_WIN32(ERROR_BAD_ARGUMENTS);
|
|
|
|
lstrcpyn(lpszMember, lpszNew, MAX_PATH); // all our string members are MAX_PATH
|
|
return S_OK;
|
|
}
|
|
|
|
// retrieve the name of the file represented by this node
|
|
LPCTSTR CPNode::GetName() const
|
|
{
|
|
return m_szName;
|
|
}
|
|
|
|
|
|
// retrieve the path of the file represented by this node
|
|
LPCTSTR CPNode::GetPath() const
|
|
{
|
|
return (m_szPath[0] == '\0' ? NULL : m_szPath);
|
|
}
|
|
|
|
// constructor
|
|
CPackageNode::CPackageNode(LPCTSTR szName, LPCTSTR szNamespace, LPCTSTR szPath) : CPNode(szName)
|
|
{
|
|
Assert (szNamespace != NULL);
|
|
lstrcpyn(m_szName, szName, MAX_PATH);
|
|
lstrcpyn(m_szNamespace, szNamespace, MAX_PATH);
|
|
if (szPath != NULL)
|
|
{
|
|
lstrcpyn(m_szPath, szPath, MAX_PATH);
|
|
}
|
|
else
|
|
{
|
|
m_szPath[0] = '\0';
|
|
}
|
|
m_pNext = NULL;
|
|
m_fIsSystemClass = FALSE;
|
|
}
|
|
|
|
// destructor
|
|
CPackageNode::~CPackageNode()
|
|
{
|
|
}
|
|
|
|
// retrieve the name of the section in the inf file which
|
|
// which the file represented by this node was installed
|
|
LPCTSTR CPackageNode::GetNamespace() const
|
|
{
|
|
return m_szNamespace;
|
|
}
|
|
|
|
// constructor
|
|
CFileNode::CFileNode(LPCTSTR szName, LPCTSTR szSection, LPCTSTR szPath) : CPNode(szName)
|
|
{
|
|
Assert (szSection != NULL);
|
|
lstrcpyn(m_szName, szName, MAX_PATH);
|
|
lstrcpyn(m_szSection, szSection, MAX_PATH);
|
|
if (szPath != NULL)
|
|
{
|
|
lstrcpyn(m_szPath, szPath, MAX_PATH);
|
|
}
|
|
else
|
|
{
|
|
m_szPath[0] = '\0';
|
|
}
|
|
m_pNext = NULL;
|
|
}
|
|
|
|
// destructor
|
|
CFileNode::~CFileNode()
|
|
{
|
|
}
|
|
|
|
|
|
|
|
// retrieve the name of the section in the inf file which
|
|
// which the file represented by this node was installed
|
|
LPCTSTR CFileNode::GetSection() const
|
|
{
|
|
return m_szSection;
|
|
}
|
|
|