sprintf для win32 kernel

Тема в разделе "WASM.NT.KERNEL", создана пользователем vladqq, 13 окт 2009.

  1. vladqq

    vladqq New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2009
    Сообщения:
    69
    хай всем

    есть ли в кернел моде чтото вроде sprintf-a ?
     
  2. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    DbgPrint?
     
  3. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    нет, там все нужно писать вручную
     
  4. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    StringCchPrintf
     
  5. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Safe String Library Routines
     
  6. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    обычный тупой _snprintf() отлично работает
     
  7. Mopga

    Mopga Иван

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    13
    Адрес:
    Новороссийск
    а я так и пишу sprintf, у меня работает
     
  8. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    sprintf - это ж просто форматное преобразование. Какие проблемы. Вот если бы printf :)
     
  9. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    valterg, ыыы?... DbgPrint: http://msdn.microsoft.com/en-us/library/ms792790.aspx
     
  10. Mopga

    Mopga Иван

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    13
    Адрес:
    Новороссийск
    valterg, вместо printf можно сделать fprintf,не все ли равно, в файл выводить или на консоль
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    sprintf никуда ничего не печатает - оно в строковую переменную все пишет. Не вижу причины почему это в кернел моде нельзя делать.
     
  12. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    valterg
    а кто сказал что нельзя?
     
  13. Mopga

    Mopga Иван

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    13
    Адрес:
    Новороссийск
    я тупо взял с какого драйвера функцию
    Код (Text):
    1. #define DEFAULT_LOG_FILE_NAME   L"\\??\\C:\\windows\\debug.txt"
    2.  
    3. BOOLEAN DVRH_LogMessage(PCHAR szFormat, ...)
    4. {
    5.     ULONG Length;
    6.     char messagebuf[256];
    7.     va_list va;
    8.     IO_STATUS_BLOCK  IoStatus;
    9.     OBJECT_ATTRIBUTES objectAttributes;
    10.     NTSTATUS status;
    11.     HANDLE FileHandle;
    12.     UNICODE_STRING fileName;
    13.    
    14.     //format the string
    15.     va_start(va,szFormat);
    16.     _vsnprintf(messagebuf,sizeof(messagebuf),szFormat,va);
    17.     va_end(va);
    18.    
    19.     //get a handle to the log file object
    20.     fileName.Buffer = NULL;
    21.     fileName.Length = 0;
    22.     fileName.MaximumLength = sizeof(DEFAULT_LOG_FILE_NAME) + sizeof(UNICODE_NULL);
    23.     fileName.Buffer = ExAllocatePool(PagedPool,
    24.                                      fileName.MaximumLength);
    25.     if (!fileName.Buffer) {
    26.         //DD(NULL,DDE,"LogMessage: FAIL. ExAllocatePool Failed.\n");
    27.         return FALSE;
    28.     }
    29.     RtlZeroMemory(fileName.Buffer, fileName.MaximumLength);
    30.     status = RtlAppendUnicodeToString(&fileName, (PWSTR)DEFAULT_LOG_FILE_NAME);
    31.    
    32.     InitializeObjectAttributes (&objectAttributes,
    33.                                 (PUNICODE_STRING)&fileName,
    34.                                 OBJ_CASE_INSENSITIVE,
    35.                                 NULL,
    36.                                 NULL );
    37.    
    38.     status = ZwCreateFile( &FileHandle,
    39.                            FILE_APPEND_DATA,
    40.                            &objectAttributes,
    41.                            &IoStatus,
    42.                            0,
    43.                            FILE_ATTRIBUTE_NORMAL,
    44.                            FILE_SHARE_WRITE,
    45.                            FILE_OPEN_IF,
    46.                            FILE_SYNCHRONOUS_IO_NONALERT,
    47.                            NULL,    
    48.                            0 );
    49.    
    50.     if( NT_SUCCESS(status) ) {
    51.         CHAR buf[300];
    52.         LARGE_INTEGER time;
    53.         KeQuerySystemTime(&time);
    54.        
    55.         //put a time stamp on the output message
    56.         sprintf(buf,"%10u-%10u  %s",time.HighPart,time.LowPart,messagebuf);
    57.        
    58.         //format the string to make sure it appends a newline carrage-return to the
    59.         //end of the string.
    60.         Length=strlen(buf);
    61.         if( buf[Length-1]=='\n' ) {
    62.             buf[Length-1]='\r';
    63.             strcat(buf,"\n");
    64.             Length++;
    65.         } else {
    66.             strcat(buf,"\r\n");
    67.             Length+=2;
    68.         }
    69.        
    70.         ZwWriteFile( FileHandle, NULL, NULL, NULL, &IoStatus, buf, Length, NULL, NULL );
    71.        
    72.         ZwClose( FileHandle );
    73.     }
    74.  
    75.     if( fileName.Buffer ) {
    76.         ExFreePool (fileName.Buffer);
    77.     }
    78.  
    79.     return STATUS_SUCCESS;
    80. }
    она у меня выводит как и printf строку в файл c:\windows\debug.txt и сразу закрывает этот файл
    в другом окне открыт фар на просмотр этого файла и также как на консоле появляется текст
     
  14. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    выбрось эту функциют забудь про неё.
    лучше уж самому написать _нормальную_.
     
  15. Mopga

    Mopga Иван

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    13
    Адрес:
    Новороссийск
    а чем она тебе не нравится?
    это пример из ddk
     
  16. Mopga

    Mopga Иван

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    13
    Адрес:
    Новороссийск
    да и какая разница какая функция, главное работает , я же все равно не буду вставлять ее в окончательный код - так для отладки юзаю