Программирование драйверов Windows


Операции над строками UNICODE_STRING - часть 3


Если требуемый размер буфера не составит труда вычислить как

(Destination-&#62Length + AppendString-&#62Length) * sizeof(WCHAR)

то расширение буфера строки-получателя &#8212 задача несколько более сложная. Хотя логично было бы иметь соответствующую системную функцию, однако в документации DDK o подобном вызове нет никакого упоминания.

Таблица 7.34. Прототип вызова RtlCompareUnicodeString

LONG RtlCompareUnicodeString IRQL == PASSIVE_LEVEL
Параметры Выполняет сравнение строк UNICODE_STRING
IN PUNICODE_STRING pString1 Указатель на первую строку
IN PUNICODE_STRING pString2 Указатель на вторую строку
BOOLEAN CaseInSensitive TRUE &#8212 игнорировать регистр (верхний/нижний)
Возвращаемое значение 0 &#8212 строки идентичны

&#60 0 &#8212 строка 1 меньше строки 2

Таблица 7.35. Прототип вызова RtlEqualUnicodeString

BOOLEAN RtlEqualUnicodeString IRQL == PASSIVE_LEVEL
Параметры Выполняет сравнение строк UNICODE_STRING
IN PUNICODE_STRING pString1 Указатель на первую строку
IN PUNICODE_STRING pString2 Указатель на вторую строку
BOOLEAN CaseInSensitive TRUE &#8212 игнорировать регистр (верхний/нижний)
Возвращаемое значение TRUE &#8212 строки идентичны

FALSE &#8212 строки различаются

Таблица 7.36. Прототип вызова RtlInt64ToUnicodeString

NTSTATUS RtlInt64ToUnicodeString IRQL == PASSIVE_LEVEL
Параметры Преобразует число int64 в UNICODE_STRING
IN ULONGLONG Value Исходное число
IN ULONG Base Формат: 16 &#8212 шестнадцатеричный, 8 &#8212 октавный, 2 &#8212 двоичный, 0 или 10 &#8212 десятичный.
IN OUT PUNICODE_STRING s Строка UNICODE_STRING
Возвращаемое значение

STATUS_SUCCESS

STATUS_BUFFER_OVERFLOW &#8212 слишком мал размер буфера UNICODE_STRING

STATUS_INVALID_PARAMETER &#8212 ошибочен параметр Base

Аналогичный прототип вызова имеют также функции преобразования целых чисел без знака и указателей в строку UNICODE_STRING &#8212 RtlIntegerToUnicodeString




Начало  Назад  Вперед