[DDK] 비스타와 XP의 디렉터리 쿼리의 차이점

폴더를 감추는 방법은 다양하다.

다양하지만 정형화된 방법으로 인해서 더이상 아이디어가 나오지

못하는 형편이다,,큭

일단 XP의 상황에서 IRP_MJ_DIRECTORY_CONTROL의

MAJOR IRP가 날라오면,

MINOR로 IRP_MN_QUERY_DIRECTORY이다.

이때 여기에 감추는 루틴을 작성하면 된다.

근데 XP와 VISTA는 사용하는 Class가 다르다는 것이다,, - _-;

삽질끝에 알았는데,

XP의 경우 폴더 목록 요청시 Class가 FileBothDirectoryInforamation이고,

Vista의 경우에는 FileIdBothDirectoryInformation을 사용하더라,, 췌

 
  1. NTSTATUS InitializeHiddenFileList()  
  2. {  
  3.     int i;  
  4.     for( i = 0 ; i < MAXHIDDENFILEENTRIES ; i ++ )  
  5.     {  
  6.         g_HiddenFileList[ i ] = (WCHAR *)ExAllocatePool( NonPagedPool, MAXHIDDENFILENAMESIZE * sizeof(WCHAR) );  
  7.         if( !g_HiddenFileList[ i ] )  
  8.             return STATUS_UNSUCCESSFUL;  
  9.         RtlZeroMemory( g_HiddenFileList[ i ], MAXHIDDENFILENAMESIZE * sizeof(WCHAR) );  
  10.     }  
  11.     return STATUS_SUCCESS;  
  12. }  
  13.  
  14. ULONG IsExistHiddenFileList( WCHAR *pwFilename )  
  15. {  
  16.     int i;  
  17.     for( i = 0 ; i < MAXHIDDENFILEENTRIES ; i ++ )  
  18.     {  
  19.         if( !g_HiddenFileList[ i ] )  
  20.             continue;  
  21.           
  22.         if( _wcsicmp( g_HiddenFileList[ i ], pwFilename ) )  
  23.             continue;  
  24.  
  25.         return TRUE;  
  26.     }  
  27.     return FALSE;  
  28. }  

 출처 : http://ssmhz.tistory.com/145 
위로 스크롤