Windows 8 在哪里可以找到Windows运行时的概念文档?

Windows 8 在哪里可以找到Windows运行时的概念文档?,windows-8,windows-runtime,Windows 8,Windows Runtime,我正在努力学习有关Windows运行时的足够知识,以便就我的雇主将现有应用程序移植到Windows运行时需要做些什么提出建议。我很难找到提供API工作原理的技术概述的文档 我所有的网络搜索似乎都把我带到了一个无法阅读的地方。它记录了API类和方法的正式签名,但似乎假定读者已经知道如何将这些内容组合在一起。每个方法的目的通常只是描述为一个简短的句子片段,用空格而不是CamelCase来重述其名称,并且几乎完全没有关于类型声明中明显的限制、期望和不变量的进一步解释。(这与普通Win32 API参考文

我正在努力学习有关Windows运行时的足够知识,以便就我的雇主将现有应用程序移植到Windows运行时需要做些什么提出建议。我很难找到提供API工作原理的技术概述的文档

我所有的网络搜索似乎都把我带到了一个无法阅读的地方。它记录了API类和方法的正式签名,但似乎假定读者已经知道如何将这些内容组合在一起。每个方法的目的通常只是描述为一个简短的句子片段,用空格而不是CamelCase来重述其名称,并且几乎完全没有关于类型声明中明显的限制、期望和不变量的进一步解释。(这与普通Win32 API参考文档中信息丰富的“备注”部分形成对比)

显然,我不应该使用此文档来初步概述API的工作原理。我应该用什么

移动到这里,有一个部分有很有前途的名称概念和体系结构,还有一些听起来更有前途的编程概念和基本原理——但它们实际上描述的是一个看似随机选择的相当专业的主题,当然不是我需要理解API参考的内容

是否有我需要购买和阅读的书籍形式的官方文件?MSDN之外的东西?我找不到的秘密MSDN链接

我见过一些没有得到任何真正答案的,可能是因为它的措辞相当晦涩,有5美元的单词,比如“本体论”。为了更好地解释我所寻找的内容,以下是一些问题的示例,我希望我寻求的文档能够告诉我以下问题的答案:

(请注意,这些只是示例。我的主要目标是找到一个规范来回答这些和类似的问题,而不是得到这些特定示例的答案。)

Windows.Networking.Sockets.StreamSocket
具有类型为
Windows.Storage.Streams.IInputStream
InputStream
属性,我显然应该使用该属性从套接字读取数据。但是
IInputStream
的唯一方法是
ReadAsync
,它读入
IBuffer
,而
IBuffer
是一个只声明容量和大小属性的接口。如何获取正在读取的实际字节数?如果我自己实现了
IBuffer
,系统将如何向我提供它们

经过数小时沮丧的点击和谷歌搜索,我初步得出结论,界面是一个谎言--
IBuffer
不是任何人都能实现的,但是
ReadAsync
特别想要一个
Windows.Storage.Streams.Buffer
(没有
I
),不管它的类型声明是什么。然后,我似乎可以使用
DataReader
缓冲区读取实际字节。真的是这样吗

嗯,看起来
DataReader
有一个构造函数,它接受一个
IInputStream
,所以也许我可以去掉
缓冲区
中间人。然而,这似乎是错误的,因为
DataReader
的方法,如
ReadBytes
是同步的,并且假定WinRT中的所有I/O都是异步的;当然,
IInputStream
的一个声明方法是。那这是怎么回事

在更沮丧的谷歌搜索和点击之后:哦,
DataReader
中有一个
LoadAsync
方法,它可以。。。某物根据MSDN,它“从输入流加载数据”,但是使用它的约定是什么?我应该在构建
DataReader
后立即调用它一次,还是可以多次调用它以在下一次读取操作中重用相同的
DataReader
DataReader
内部是否包含循环缓冲区?如果我尝试读取的字节数超过异步读取的字节数,会发生什么情况?
ReadFoo
方法的超级简洁文档没有提到异常或错误条件;
DataReader
IDataReader
的类文档也不适用

显然,应用程序可以是多线程的,因为它包括诸如
InterlocatedCompareeExchange
EnterCriticalSection
等内容。但是
CreateThread
和RTL的
\u beginthreadex
似乎都不受支持,而且在WinRT类层次结构中似乎没有任何Java ish
Thread
类。如何开始一个新的线程

说到异步I/O。。。我对异步I/O和完成连续性的一般概念很熟悉,但是WinRT中调用完成例程的线程的精确规则是什么?如果总是从同一个线程开始I/O操作(我希望如此!),我是否需要确保它不时进入某种可警报的等待,以便系统有机会在那里调用我的代码

Wikipedia声称“WinRT本质上是一个基于COM的API,尽管它依赖于增强的COM。”这个“增强”到底是什么?如果我遵循COM规则和惯例,我是否会因为“增强”而面临工作方式不同的风险?或者,反过来说,有什么事情我可以做得更容易,因为增强

关于异步回调如何工作的唯一描述使得它们看起来非常特定于实现语言——在C#/CLR、JavaScript和C++/CX之间看起来有很大的不同。在COM/ABI级别实际发生了什么?特别是,由于API文档似乎假定“C++”表示“C++/CX”,异步I/O是如何实现的