¿Es legal enviar un LPTSTR directamente a un BSTR?¿Puedes lanzar un LPTSTR a un BSTR?
Basado en mi understanding of BSTR, el envío de un LPTSTR directamente a un BSTR lo dejará con un prefijo de longitud dañado. El código de ejemplo establece explícitamente que un literal de cadena no se puede almacenar en un BSTR. ¿Alguien puede confirmarme que un LPTSTR/LPCTSTR no puede ser lanzado directamente a un BSTR sin corromper el prefijo de longitud?
EDIT:
Mi confusión es de ver esto se utiliza en una llamada a un objeto COM. Resulta que al compilar el dll COM, se genera un archivo .tli que crea un método intermedio. Este método toma el tipo _bstr_t
. El _bstr_t
puede tomar LPTSTR
en su constructor, por lo que todo funciona sin problemas.
Los datos de cadena no se interpretarán como longitud. Los bytes inmediatamente anteriores serían. Un BSTR apunta a la parte de cadena de la estructura de longitud + cadena. –
@Ben: Gracias por la aclaración, no lo sabía. Revisaré la respuesta en consecuencia. – Jon