x64 да... но думаю проблема уже не в том... А в моей глупости в проверке на файл. Как можно проверить строки на точное попадание файла. Использую такую функцию. Код (Text): BOOLEAN stTestFiles(UNICODE_STRING* FName,//перехваченная строка CHAR* sName)//тестовая строка { ANSI_STRING str1;//строковые переменные UNICODE_STRING un1; int i; int len,len1; char *slesh="\\"; BOOLEAN gAccess; NTSTATUS result; ////////////////////////////////////////////// __try { len=strlen(sName); RtlUpcaseUnicodeString(&un1,FName,TRUE); result = RtlUnicodeStringToAnsiString(&str1,&un1,TRUE); // инициализируем строку ANSI1 len1=strlen(str1.Buffer); if(NT_SUCCESS(result)) { RtlZeroMemory(chars1,sizeof(chars1)); RtlZeroMemory(chars2,sizeof(chars2)); result = RtlStringCchCopyA(chars2,300,sName); if (!NT_SUCCESS(result)) { KdPrint(("Error copying string into the buffer\n")); return result; } RtlStringCchCopyA(chars1,300,str1.Buffer); chars2[len]=0; chars1[len1]=0; } gAccess=FALSE;//прединициализация for (i=0;i<=len-1;i++) { if (chars1[i]!=chars2[i]) { gAccess=TRUE; break; } if (i==len-1) if (chars1[len]!=*slesh && chars1[len]!=0) gAccess=TRUE;//DPRINT("%d sd %s, %s",len,chars1[len], chars2[len]);} } RtlFreeAnsiString(&str1); RtlFreeUnicodeString(&un1); } __except(EXCEPTION_EXECUTE_HANDLER) { DbgPrint(("pzdc")); gAccess = TRUE; } if (!gAccess) return FALSE; else return TRUE; }//stTestFiles