文档章节

SAFEARRAY Data Type来自MSDN

小青_1989
 小青_1989
发布于 2014/06/06 21:05
字数 326
阅读 21
收藏 0
点赞 0
评论 0

The definition for a safe array varies, depending on the target operating system platform. On 32-bit Windows systems, both the cbElements and cLocks parameters are unsigned long integers, and the handle parameter is omitted. On 16-bit Windows systems, cbElements and cLocks are unsigned short integers The handle parameter is retained for compatibility with earlier software. For example:

typedef struct FARSTRUCT tagSAFEARRAY {
    unsigned short cDims;         // Count of dimensions in this array.
    unsigned short fFeatures;    // Flags used by the SafeArray
                                // routines documented below.
#if defined(WIN32)
    unsigned long cbElements;    // Size of an element of the array.
                                // Does not include size of
                                // pointed-to data.
    unsigned long cLocks;        // Number of times the array has been 
                                // locked without corresponding unlock.
#else
    unsigned short cbElements;
    unsigned short cLocks;
    unsigned long handle;        // Unused but kept for compatibility.
#endif
    void HUGEP* pvData;                 // Pointer to the data.
    SAFEARRAYBOUND rgsabound[1];        // One bound for each dimension.
} SAFEARRAY;

The array rgsabound is stored with the left-most dimension in rgsabound[0] and the right-most dimension in rgsabound[cDims 1]. If an array was specified in a C-like syntax as a [2][5], it would have two elements in the rgsabound vector. Element 0 has an lLbound of 0 and a cElements of 2. Element 1 has an lLbound of 0 and a cElements of 5.

The fFeatures flags describe attributes of an array that can affect how the array is released. This allows freeing the array without referencing its containing variant. The bits are accessed using the following constants:

#define FADF_AUTO        0x0001    // Array is allocated on the stack.
#define FADF_STATIC        0x0002    // Array is statically allocated.
#define FADF_EMBEDDED    0x0004    // Array is embedded in a structure.
#define FADF_FIXEDSIZE    0x0010    // Array may not be resized or 
                                // reallocated.
#define FADF_BSTR        0x0100    // An array of BSTRs.
#define FADF_UNKNOWN        0x0200    // An array of IUnknown*.
#define FADF_DISPATCH    0x0400    // An array of IDispatch*.
#define FADF_VARIANT        0x0800    // An array of VARIANTs.
#define FADF_RESERVED    0xF0E8    // Bits reserved for future use.


本文转载自:

共有 人打赏支持
小青_1989
粉丝 3
博文 44
码字总数 12913
作品 0
大连
程序员
Class SafeArray

Class SafeArray public final class SafeArray{ // Constructors public SafeArray(int vt); public SafeArray(int vt, int celems); public SafeArray(int vt, int celems1, int celems2);......

小青_1989 ⋅ 2014/06/06 ⋅ 1

SAFEARRAY使用实例

目录: SAFEARRAY使用实例... 1 目录:... 1 前言:... 1 何谓SAFEARRAY:... 1 创建SAFEARRAY:2 方法一:使用SafeArrayAllocDescriptor在栈上创建一维数组... 2 方法二:使用SafeArrayAllo...

长平狐 ⋅ 2012/08/28 ⋅ 0

关于SafeArray的使用说明(转)

猛料资料,首先介绍SafeArray使用,在介绍SafeArray中的结构。看完该节文章,SafeArray的陌生感一扫而去。 SafeArray 在ADO编程中经常使用。它的主要目的是用于automation中的数组型参数的传...

小青_1989 ⋅ 2014/06/06 ⋅ 0

标准MFC WinSock ActiveX控件开发实例(基础篇)

摘要:本文主要介绍如何开发一个ActiveX控件,提供接口,与相应事件挂钩。文中涉及到VARIANT,SAFEARRAY,BSTR的详细使用方法。 另外还提供了WinSock的详细开发步骤,以及如何响应网络超时,...

小青_1989 ⋅ 2014/06/06 ⋅ 0

创建控件全过程

一、MFC ActiveX控件开发步骤(VC 6.0):   New->Projects->MFC ActiveX ControlWizard,然后输入MFCWinSock工程名。如下图:   图片看不清楚?请点击这里查看原图(大图)。   图一 创建...

小青_1989 ⋅ 2014/06/06 ⋅ 0

COM内置数据类型

COM 数据类型 下表显示在 COM 中使用的数据类型及其相应的 .NET Framework 内置值类型或类。 此表中没有显式标识的任何类型都将被转换为 Int32 系统类型。 有关 Visual Basic 2005、C# 和 C+...

西昆仑 ⋅ 2012/03/19 ⋅ 2

10个鲜为人知的C#关键字

10 Not So Well Known Keywords in C# Ok before the flaming start let me state this. These are known to most hardcore programmers and not knowing them doesn’t make you less of a ......

技术小美 ⋅ 2017/11/07 ⋅ 0

ADO.NET Code Samples Collection【转载】

原文链接:http://blogs.msdn.com/b/jmeier/archive/2010/10/31/ado-net-code-samples-collection.aspx 版权声明:本文全部版权归原作者所有。 ADO.NET Code Samples Collection J.D. Meier......

56jobs ⋅ 2010/11/19 ⋅ 0

COM封装字节数组,并用于C#/c++中

由于项目开发需要,原有的程序用C++开发,但是现有用C#开发,所以需要对用C++开发的接口利用COM进行封装,供c#语言调用,在此处用到一个字节数组,所以此处对其进行封装。 (一)用到的COM接...

西昆仑 ⋅ 2012/04/27 ⋅ 1

Returning a Value from a Method 方法的返回

Returning a Value from a Method A method returns to the code that invoked it when it completes all the statements in the method, reaches a statement, or throws an exception (cov......

zray4u ⋅ 2016/08/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 42分钟前 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部