wsprintf и заморочка с параметрами

Тема в разделе "LANGS.C", создана пользователем karabas_barabas, 15 май 2010.

  1. karabas_barabas

    karabas_barabas Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    168
    вообщем хочу создать функцию dprintf на основе wsprintf , как правильно передать параметры
    Код (Text):
    1. void dprintf( параметры тут както указать как в wsprintf)
    2. {
    3. char buff[512];
    4. wsprintf( сюда параметры те что в dprintf);
    5. OutputDebugString(buff);
    6. }
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    http://msdn.microsoft.com/en-us/library/ms647551%28VS.85%29.aspx
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    karabas_barabas
    Не используйте эту функу, юзайте DbgPrint().
     
  4. djmans

    djmans New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    312
    wvsprintf, пример в интернетах.
     
  5. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Код (Text):
    1. static  char    OutputDetailedString[DETAILED_STRING_SIZE]  = {0};
    2. static  char    OutputString[STRING_SIZE]                   = {0};
    3. static  ULONG   IoBytesDone                                 = 0;
    4. static  BOOLEAN ConsoleEnabled                              = FALSE;
    5.  
    6. VOID
    7. DebugMsgEx(
    8.     IN  BOOLEAN IsModuleEnabled,
    9.     IN  BOOLEAN IsDetailedInfoEnabled,
    10.     IN  BOOLEAN DbgModuleMask,
    11.     IN  BOOLEAN IsConsoleEnabled,
    12.     IN  CHAR*   pSrcFile,
    13.     IN  CHAR*   pSrcFunction,
    14.     IN  ULONG   SrcFileLineNumber,
    15.     IN  ULONG   Flags,
    16.     IN  CHAR*   pSpecs,
    17.     ...
    18.     )
    19. {
    20.     va_list pForwardedList    = (va_list)((ULONG)&pSpecs + (ULONG)sizeof(pSpecs));
    21.  
    22.     if(IsModuleEnabled && Flags&DbgModuleMask)
    23.     {
    24.         if(IsDetailedInfoEnabled)
    25.         {
    26.             wsprintfA(
    27.                 OutputDetailedString,
    28.                 "%s, %s(%.06d): ",
    29.                 pSrcFile,
    30.                 pSrcFunction,
    31.                 SrcFileLineNumber
    32.                 );
    33.             wvsprintfA(OutputString, pSpecs, pForwardedList);
    34.             lstrcatA(OutputDetailedString, OutputString);
    35.             if(IsConsoleEnabled)
    36.             {
    37.                 if(!ConsoleEnabled)
    38.                 {
    39.                     AllocConsole();
    40.                     ConsoleEnabled = TRUE;
    41.                 }
    42.                 WriteConsoleA(
    43.                     GetStdHandle(STD_OUTPUT_HANDLE),
    44.                     OutputDetailedString,
    45.                     lstrlenA(OutputDetailedString),
    46.                     &IoBytesDone,
    47.                     NULL
    48.                     );
    49.             }
    50.             else
    51.             {
    52.                 OutputDebugStringA(OutputDetailedString);
    53.             }
    54.         }
    55.         else
    56.         {
    57.             wvsprintfA(OutputString, pSpecs, pForwardedList);
    58.             if(IsConsoleEnabled)
    59.             {
    60.                 if(!ConsoleEnabled)
    61.                 {
    62.                     AllocConsole();
    63.                     ConsoleEnabled = TRUE;
    64.                 }
    65.                 WriteConsoleA(
    66.                     GetStdHandle(STD_OUTPUT_HANDLE),
    67.                     OutputString,
    68.                     lstrlenA(OutputString),
    69.                     &IoBytesDone,
    70.                     NULL
    71.                     );
    72.             }
    73.             else
    74.             {
    75.                 OutputDebugStringA(OutputString);
    76.             }
    77.         }
    78.     }
    79. }
     
  6. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    add^
    Код (Text):
    1. #define DbgTrace(...)               \
    2.     DebugMsgEx(                     \
    3.         DBG_MODULE_ENABLED,         \
    4.         DBG_DETAILED_ENABLED,       \
    5.         DBG_MODULE_MASK,            \
    6.         DBG_CONSOLE_ENABLED,        \
    7.         __FILE__,                   \
    8.         __FUNCTION__,               \
    9.         __LINE__,                   \
    10.         DBG_TRACE,                  \
    11.         __VA_ARGS__                 \
    12.         )
     
  7. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Код (Text):
    1. void dprintf(LPTSTR lpFormat, ...)
    2. {
    3.   va_list args;
    4.  
    5.   va_start(args, lpFormat);
    6.  
    7.   _vtprintf(lpFormat, args);
    8.  
    9.   va_end(args);
    10. }
    Так?..
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    а почему?
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    GoldFinch
    Она не выполняет ядерный вывод.
     
  10. karabas_barabas

    karabas_barabas Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    168
    спасибо всем, вопрос решен...
    дык DbgPrint ее ж тока из ring0 можно использовать ?!...
    меня интересует в ring3
     
  11. Phyber

    Phyber New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2010
    Сообщения:
    96
    karabas_barabas
    Clerk не знает что такое ring3 :)
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    karabas_barabas
    Что значить только. Она экспортируется нтдлл. Если есть в экспорте ядра, это не значит что нет в юзермоде :lol:
     
  13. karabas_barabas

    karabas_barabas Member

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