zoukankan      html  css  js  c++  java
  • BSTR

    BSTR

    A BSTR (Basic string or binary string) is a string data type that is used by COM, Automation, and Interop functions. Use the BSTR data type in all interfaces that will be accessed from script.

    C++

     

    typedef WCHAR OLECHAR;

    typedef OLECHAR* BSTR;

    typedef BSTR* LPBSTR;

     

    Remarks

    A BSTR is a composite data type that consists of a length prefix, a data string, and a terminator. The following table describes these components.

    Item

    Description

    Length prefix

    A four-byte integer that contains the number of bytes in the following data string. It appears immediately before the first character of the data string. This value does not include the terminating null character.

    Data string

    A string of Unicode characters. May contain multiple embedded null characters.

    Terminator

    Two null characters.

       

    A BSTR is a pointer. The pointer points to the first character of the data string, not to the length prefix.

    BSTRs are allocated using COM memory allocation functions, so they can be returned from methods without concern for memory allocation.

    The following code is incorrect:

    BSTR MyBstr = L"I am a happy BSTR";

    This code builds (compiles and links) correctly, but it will not function properly because the string does not have a length prefix. If you use a debugger to examine the memory location of this variable, you will not see a four-byte length prefix preceding the data string.

    Instead, use the following code:

    BSTR MyBstr = SysAllocString(L"I am a happy BSTR");

    A debugger that examines the memory location of this variable will now reveal a length prefix containing the value 34. This is the expected value for a 17-byte single-character string that is converted to a wide-character string through the inclusion of the "L" string modifier. The debugger will also show a two-byte terminating null character (0x0000) that appears after the data string.

    If you pass a simple Unicode string as an argument to a COM function that is expecting a BSTR, the COM function will fail.

    Requirements

    Header

    WTypes.h

  • 相关阅读:
    Cisco IOS XE 3S–to–Cisco IOS Release Number Mapping
    ORA-01157 误删表空间对应的dbf文件出现的错误的解决办法
    记录-Windows10 cnpm报禁止运行脚本
    记录-html和html5区别
    记录-查询硬盘物理序号
    CRC16 Java 实现
    kaldi解码及特征提取详解
    kaldi GMM模型解码指令 gmm-latgen-faster详解
    kaldi基于GMM的单音素模型 训练部分
    kaldi学习
  • 原文地址:https://www.cnblogs.com/time-is-life/p/5643156.html
Copyright © 2011-2022 走看看