Справочник по технологии COM
Страница 13. SysAllocStringByteLen


 

SysAllocStringByteLen

Принимает на входе строку ANSI и возвращает содержащую ее BSTR. Не выполняет никаких преобразований ANSI-Unicode.

BSTR SysAllocStringByteLen( 
char FAR* psz,
unsigned int len
);

Параметры:

  • psz - Заканчивающаяся нулем строка, которую нужно скопировать, или NULL, если новая строка должна остаться неинициализированной.
  • len - Число байт, которые нужно скопировать из psz. После скопированных символов добавляется нулевой символ, т. е. всего выделяется len +1 байт.

Выделяет новую строку длиной в len байт, копирует в нее len байт из исходной строки и затем добавляет к концу нулевой символ. Имеется только в 32-разрядных системах.

Возвращаемое значение:
Указатель на копию строки или NULL, если не хватает памяти.

Комментарии:
Эта функция предназначена для создания BSTR, содержащих двоичные данные. Вы можете использовать BSTR такого типа только в тех случаях, если они не будут транслироваться из ANSI в Unicode или наоборот.
Например, не используйте такие BSTR для обмена информацией между 16- и 32-разрядными приложениями, выполняющимися под управлением 32-разрядной Windows. Слой OLE, обеспечивающий взаимодействие 16—32 (и 32—16), транслирует BSTR и разрушит двоичные данные. Для передачи двоичных данных рекомендуется использовать SAFEARRAY типа VT_UI1, который не транслируется OLE.
Если psz равен NULL, то строка заданной длины выделяется, но не инициализируется. Строка psz может содержать внутри нулевые символы и не обязана заканчиваться таким символом. Для освобождения полученной строки используйте SysFreeString

 
Следующая статья »