⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kshielddirectory.h

📁 尔罗斯著名黑客写的rootkit
💻 H
字号:
#ifndef __KSHIELDDIRECTORY_H
 #define __KSHIELDDIRECTORY_H

#ifndef __TEST_WIN32
 extern "C"
 {
  #include "ntddk.h"
 }
 
 #include "../Include/KNew.h"
 #include "../Include/KTypes.h"
 #include "../KStdLib/krnlstdlib.h"
#else
 #include <windows.h>
#endif //__TEST_WIN32

#include "../KSpinSynchroObject/KSpinSynchroObject.h"

class KDLinkedList;
class KBinaryTree;
class KShieldDirectory;
//*******************************************************************//
#define SDIR_SEARCH_BY_INFO      0
#define SDIR_SEARCH_BY_NAME      1

class KShieldDirectory
{
   friend class KShieldDirectoryTree;
  public:
   typedef struct tag_DIRECTORY_INFO
   {
     PWSTR        m_pwszName;
     int          m_nSizeName;    // without zero end (by bytes)
     BOOLEAN      m_bCompareRest; // if IsEmpty() == TRUE && into m_pwszName exist '?' or '*'
     PVOID        m_pUserContext; //
     ULONG        m_dwUserCount;
     ULONG        m_dwChildItemsCount;

     tag_DIRECTORY_INFO()
     {
       m_pwszName = NULL;   
       m_nSizeName = 0;  
       m_bCompareRest = FALSE;
       m_pUserContext = NULL;
       m_dwUserCount = 0;
       m_dwChildItemsCount = 0;
     };
     ~tag_DIRECTORY_INFO()
     {
       if (m_pwszName != NULL)
         delete m_pwszName;
       m_pwszName = NULL;
     };
   } DIRECTORY_INFO, *PDIRECTORY_INFO;

   explicit
   KShieldDirectory(KShieldDirectory* pParentDirectory);
   virtual ~KShieldDirectory();

   virtual BOOLEAN        Open(PWSTR pwszName, PVOID pUserContext = NULL);
   virtual void           Close();
   virtual KShieldDirectory* Add(PWSTR pwszName, PVOID pUserContext = NULL);
   virtual BOOLEAN           Remove(PWSTR pwszName);
   virtual KShieldDirectory* Find(PWSTR pwszName);
   virtual KShieldDirectory* FindMatch(PWSTR pwszName);
           BOOLEAN        IsEmpty();

  protected:
   virtual PDIRECTORY_INFO CreateDirectoryInfo(PWSTR pwszName, PVOID pUserContext = NULL);

  private:
   KShieldDirectory(const KShieldDirectory&);
   KShieldDirectory& operator=(const KShieldDirectory& right);

           BOOLEAN        IsMatchedName(PWSTR pwszName, WCHAR Symbol);

   static int             _CompareFullNames(PVOID* pData1, PVOID* pData2, ULONG dwParam);
   static int             CompareDirInfo(PDIRECTORY_INFO pDirInfo1, PDIRECTORY_INFO pDirInfo2);
   static int             CompareNameAndDirInfo(PDIRECTORY_INFO pDirInfo, PWSTR pwszName);

  public:
   PDIRECTORY_INFO        m_pDirectoryInfo;
   KShieldDirectory*      m_pParentDirectory;

  protected:
   KBinaryTree*           m_KBTreeFullNameItems;
   KDLinkedList*          m_pDListMatchNameItems;
   BOOLEAN                m_bOpen;

   KSpinSynchroObject     m_KSynchroObject;
   //KNativeSynchroObject   m_KSynchroObject;
};


#endif //__KSHIELDDIRECTORY_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -