Список файлов

Тема в разделе "WASM.BEGINNERS", создана пользователем Igi, 30 июл 2006.

  1. Igi

    Igi New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2005
    Сообщения:
    35
    Здравствуте. Начал разбираться с перехватом АПИ, на примере скрытия файлов, все прекрасно работает, в общем рад до безумия =) Решил сделать удобную структуру для хранения скрываемых файлов и функции для работы с ней, но вот... понять не могу как реализовать доконца. Ниже код того что наваял - но что-то мне подсказывает что совершенно неправильно все. И с последней функцией так и не разобрался как реализовать...

    Код (Text):
    1. typedef struct _FilesList
    2. {
    3.     PVOID NextItem;
    4.     ULONG FileNameLength;
    5.     WCHAR FileName[1];
    6. } TFilesList, *PFilesList;
    7.  
    8.  
    9. BOOLEAN FilesListIsAdded(PFilesList List, ULONG FileNameLength, WCHAR FileName[1])
    10. {
    11.     PFilesList Item = List;
    12.     while (Item)
    13.     {
    14.     if (_wcsnicmphf(Item->FileName,FileName, FileNameLength) == 0) return TRUE;
    15.         Item = Item->NextItem;
    16.     }
    17.     return FALSE;
    18. }
    19.  
    20. void FilesListDelItem(PFilesList *List, ULONG FileNameLength, WCHAR FileName[1])
    21. {
    22.     PFilesList Item = *List;
    23.     PFilesList Prev = NULL;
    24.     while (Item)
    25.     {
    26.         if (_wcsnicmphf(Item->FileName,FileName, FileNameLength) == 0)
    27.         {
    28.             if (Prev) Prev->NextItem = Item->NextItem; else *List = Item->NextItem;
    29.             ExFreePool(Item);
    30.             return;
    31.         }
    32.         Prev = Item;
    33.         Item = Item->NextItem;
    34.     }
    35.     return;
    36. }
    37.  
    38.  
    39. void FilesListFreePointers(PFilesList List)
    40. {
    41.     PFilesList Item = List;
    42.     PVOID Mem;
    43.     while (Item)
    44.     {
    45.         Mem = Item;    
    46.         Item = Item->NextItem;
    47.         ExFreePool(Mem);
    48.     }
    49.     return;
    50. }
    51.  
    52.  
    53. void FilesListAddItem(PFilesList *List, ULONG FileNameLength, WCHAR FileName[1])
    54. {
    55.     PFilesList wNewItem;
    56.     wNewItem = ExAllocatePool(NonPagedPool, sizeof(TFilesList));
    57.     wNewItem->NextItem = *List;
    58.     *List = wNewItem;
    59.     wNewItem->FileNameLength= FileNameLength;
    60.     wNewItem->FileName[FileNameLength] = FileName[FileNameLength];
    61.     return;
    62. }