strcpy

Тема в разделе "WASM.NT.KERNEL", создана пользователем Cristoff, 8 июн 2009.

  1. Cristoff

    Cristoff New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2009
    Сообщения:
    20
    x64
    да...

    но думаю проблема уже не в том... А в моей глупости в проверке на файл. Как можно проверить строки на точное попадание файла.
    Использую такую функцию.
    Код (Text):
    1. BOOLEAN stTestFiles(UNICODE_STRING* FName,//перехваченная строка
    2.                  CHAR* sName)//тестовая строка
    3. {  
    4.     ANSI_STRING str1;//строковые переменные
    5.     UNICODE_STRING un1;
    6.  
    7.     int i; 
    8.     int len,len1;
    9.     char *slesh="\\";
    10.  
    11.     BOOLEAN gAccess;
    12.     NTSTATUS result;
    13.     //////////////////////////////////////////////
    14.     __try
    15.     {
    16.     len=strlen(sName);
    17.     RtlUpcaseUnicodeString(&un1,FName,TRUE);   
    18.     result = RtlUnicodeStringToAnsiString(&str1,&un1,TRUE);     // инициализируем строку ANSI1
    19.    
    20.     len1=strlen(str1.Buffer);
    21.     if(NT_SUCCESS(result))
    22.     {
    23.  
    24.         RtlZeroMemory(chars1,sizeof(chars1));
    25.         RtlZeroMemory(chars2,sizeof(chars2));
    26.        
    27.         result = RtlStringCchCopyA(chars2,300,sName);
    28.         if (!NT_SUCCESS(result)) {
    29.             KdPrint(("Error copying string into the buffer\n"));
    30.             return result;
    31.         }
    32.         RtlStringCchCopyA(chars1,300,str1.Buffer);     
    33.         chars2[len]=0;
    34.         chars1[len1]=0;
    35.     }
    36.     gAccess=FALSE;//прединициализация
    37.     for (i=0;i<=len-1;i++)
    38.         {
    39.             if (chars1[i]!=chars2[i])
    40.             {
    41.             gAccess=TRUE;
    42.             break;
    43.             }
    44.             if (i==len-1)
    45.                 if (chars1[len]!=*slesh && chars1[len]!=0) gAccess=TRUE;//DPRINT("%d sd %s, %s",len,chars1[len], chars2[len]);}
    46.         }
    47.  
    48.     RtlFreeAnsiString(&str1);
    49.     RtlFreeUnicodeString(&un1);
    50.     }
    51.     __except(EXCEPTION_EXECUTE_HANDLER)
    52.     {
    53.         DbgPrint(("pzdc"));
    54.     gAccess = TRUE;
    55.     }
    56.     if (!gAccess) return FALSE; else
    57.                   return TRUE;
    58. }//stTestFiles