LinkList.cpp
上传用户:tzh4061
上传日期:2007-01-08
资源大小:309k
文件大小:1k
源码类别:

钩子与API截获

开发平台:

Visual C++

  1. // ----------------------------------- //
  2. //            APISpy32 v2.0            //
  3. //     Copyright 1999 Yariv Kaplan     //
  4. //          WWW.INTERNALS.COM          //
  5. // ----------------------------------- //
  6. #include "LinkList.h"
  7. #include "APISpy32.h"
  8. tagAPIInfo *Head = NULL;
  9. tagAPIInfo *Tail = NULL;
  10. #ifdef WIN95
  11. DWORD dwItemIndex = 0;
  12. tagAPIInfo APIInfoArray[MAX_API];
  13. #endif
  14. tagAPIInfo *AddItem()
  15. {
  16.   tagAPIInfo *Item;
  17.   #ifdef WIN95
  18.   if (dwItemIndex == MAX_API)
  19.     return NULL;
  20.   Item = &APIInfoArray[dwItemIndex];
  21.   dwItemIndex++;
  22.   #endif
  23.   #ifdef WINNT
  24.   Item = new tagAPIInfo;
  25.   #endif
  26.   if (Head == NULL)
  27.   {
  28.     Head = Item;
  29.     Tail = Item;
  30.   }
  31.   else
  32.   {
  33.     Tail->Next = Item;
  34.     Tail = Tail->Next;
  35.   }  
  36.   Tail->Next = NULL;
  37.   
  38.   return Item;
  39. }
  40. #ifdef WINNT
  41. void RemoveItem(tagAPIInfo *Item)
  42. {
  43.   tagAPIInfo *CurrentItem = Head;
  44.   if (Head == NULL) return;
  45.   if (Item == Head)
  46.   {
  47.     if (Head == Tail) Tail = NULL;
  48.     Head = Head->Next;
  49.     delete Item;
  50.     return;
  51.   }
  52.   while (CurrentItem->Next != Item)
  53.     CurrentItem = CurrentItem->Next;
  54.   
  55.   CurrentItem->Next = Item->Next;
  56.   if (Item == Tail) Tail = CurrentItem;
  57.   delete Item;
  58. }
  59. #endif