Принимает на входе строку ANSI и возвращает содержащую ее BSTR. Не выполняет никаких преобразований ANSI-Unicode.
BSTR SysAllocStringByteLen( char FAR* psz, unsigned int len );
Параметры:
Выделяет новую строку длиной в 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.