Вопрос

KdPrint((
         "Unknown IoControlCode %#x\n",
                io_stack->Parameters.DeviceIoControl.IoControlCode
        ));

Это странно. Что означает острый?

Это было полезно?

Решение

Документация PrintF говорит:

Характер% следует ноль или более из следующих флагов:

# Значение должно быть преобразовано в «альтернативную форму». Для преобразований o первый символ выходной строки выполнен ноль (префиксирует 0, если он уже не был нулевым). Для преобразований X и X ненулевой результат имеет строку «0x» (или «0x» для преобразований X) для него. Для преобразований A, A, E, E, F, F, G и E, E, F, F, G и G всегда будет содержать десятичную точку, даже если никаких цифр не подходит к ней (нормально, десятичная точка появляется в результатах этих преобразований только в том случае цифра следует). Для преобразований G и G задние нули не удаляются из результата, поскольку они в противном случае были бы. Для других преобразований результат не определен.

MSDN Docs на флагах здесь.

Таким образом, для %#x Значение просто префиксируется с 0x. Отказ Где %x будет давать 34ab, %#x будет давать 0x34ab.

Другие советы

# недействительные альтернативный формат. Отказ За x это значит, что 0x добавлен к выходу.

Printf. При использовании с спецификатором x, # вызывает префикс вывода с 0x при условии, что напечатанная ценность Кроме как 0.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top