sprintf никуда ничего не печатает - оно в строковую переменную все пишет. Не вижу причины почему это в кернел моде нельзя делать.
я тупо взял с какого драйвера функцию Код (Text): #define DEFAULT_LOG_FILE_NAME L"\\??\\C:\\windows\\debug.txt" BOOLEAN DVRH_LogMessage(PCHAR szFormat, ...) { ULONG Length; char messagebuf[256]; va_list va; IO_STATUS_BLOCK IoStatus; OBJECT_ATTRIBUTES objectAttributes; NTSTATUS status; HANDLE FileHandle; UNICODE_STRING fileName; //format the string va_start(va,szFormat); _vsnprintf(messagebuf,sizeof(messagebuf),szFormat,va); va_end(va); //get a handle to the log file object fileName.Buffer = NULL; fileName.Length = 0; fileName.MaximumLength = sizeof(DEFAULT_LOG_FILE_NAME) + sizeof(UNICODE_NULL); fileName.Buffer = ExAllocatePool(PagedPool, fileName.MaximumLength); if (!fileName.Buffer) { //DD(NULL,DDE,"LogMessage: FAIL. ExAllocatePool Failed.\n"); return FALSE; } RtlZeroMemory(fileName.Buffer, fileName.MaximumLength); status = RtlAppendUnicodeToString(&fileName, (PWSTR)DEFAULT_LOG_FILE_NAME); InitializeObjectAttributes (&objectAttributes, (PUNICODE_STRING)&fileName, OBJ_CASE_INSENSITIVE, NULL, NULL ); status = ZwCreateFile( &FileHandle, FILE_APPEND_DATA, &objectAttributes, &IoStatus, 0, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_WRITE, FILE_OPEN_IF, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 ); if( NT_SUCCESS(status) ) { CHAR buf[300]; LARGE_INTEGER time; KeQuerySystemTime(&time); //put a time stamp on the output message sprintf(buf,"%10u-%10u %s",time.HighPart,time.LowPart,messagebuf); //format the string to make sure it appends a newline carrage-return to the //end of the string. Length=strlen(buf); if( buf[Length-1]=='\n' ) { buf[Length-1]='\r'; strcat(buf,"\n"); Length++; } else { strcat(buf,"\r\n"); Length+=2; } ZwWriteFile( FileHandle, NULL, NULL, NULL, &IoStatus, buf, Length, NULL, NULL ); ZwClose( FileHandle ); } if( fileName.Buffer ) { ExFreePool (fileName.Buffer); } return STATUS_SUCCESS; } она у меня выводит как и printf строку в файл c:\windows\debug.txt и сразу закрывает этот файл в другом окне открыт фар на просмотр этого файла и также как на консоле появляется текст
да и какая разница какая функция, главное работает , я же все равно не буду вставлять ее в окончательный код - так для отладки юзаю