首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过WRL idl检索数组

通过WRL idl检索数组
EN

Stack Overflow用户
提问于 2018-03-29 05:59:08
回答 1查看 217关注 0票数 1

我也问过同样的问题,这里

我在创建返回数组对象的API方面遇到了困难。

以下是我迄今所尝试过的。我编写了将数组作为参数返回的方法。

代码语言:javascript
复制
HRESULT GetMyObjectList([out] UINT32* objCount, [out, size_is(*objCount)] MyObject myobj[*]);

这给了我以下错误:Error MIDL4048 [msg]Unsupported array pattern detected. [context]myobj

此外,我还尝试将数组添加到自定义对象中,即

代码语言:javascript
复制
[version(1.0)]  
typedef struct MyCustomObject  
{  
    UINT32 count;  
    [size_is(count)] UINT32 someParams1[*]; 
} MyCustomObject;

在本例中,我得到以下错误:Error MIDL4000 [msg]A structure field cannot be a type of pointer. [context]: someParams1 [ Field 'someParams1' of Struct 'MyName.Space.MyCustomObject' ]

有人能告诉我这里有什么问题吗?或提供工作示例,通过WRL检索对象数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-31 00:58:56

缓冲区的正确IDL取决于它是进入还是退出。

来自SDK中的windows.security.cryptography.idl

代码语言:javascript
复制
interface ICryptographicBufferStatics : IInspectable
{
  // other methods omitted...

  HRESULT CreateFromByteArray([in] UINT32 __valueSize, 
    [in] [size_is(__valueSize)] BYTE* value, 
    [out] [retval] Windows.Storage.Streams.IBuffer** buffer);

  HRESULT CopyToByteArray([in] Windows.Storage.Streams.IBuffer* buffer,
    [out] UINT32* __valueSize, 
    [out] [size_is(, *__valueSize)] BYTE** value);
}

注意,在WinRT中没有"by ref“数组类型--数组总是被复制的。调用方分配它,被调用方获取副本,或者被调用方分配它,调用方获得所有权。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49548990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档