当前位置: 首页 > news >正文

【Windows学习笔记】1:OneCore和Windows API

1 OneCore

主流Windows跑在PC上,Xbox跑的是从Windows 2000分支出来的版本,Windows Phone跑的是基于Windows CE(实时操作系统)的版本。

为了维护和扩展这些code方便,微软将kernels和base platform集成在一起叫OneCore,这个共享平台给所有的Windows版本使用。

这些平台互不相同,比如P在HoloLens上支持键鼠就不合理,所以这些部分不在OneCore里,但是kernel、driver和base platform binary之类的是相同的(有些feature可以通过registry-based或者policy-based settings使得在不同的平台上都make sense)。

2 Windows API

指和Windows相关OS的user-mode的系统编程接口,也叫Win32 API,但是指代的包含32-bit和64-bit的版本。在MSDN(Microsoft Developer Network)上可以在线浏览各种Windows API。

2.1 COM (Component Object Model)

由于Windows API最早都设计成C-style的function,好处是足够low level,并且能方便被其它语言access,但是坏处是naming consistency和logical groupings不好,所以就做了COM。

COM最早是给Office做文档之间的数据交换的(比如把Excel表嵌入在Word或者PPT里),这个功能最早是用基于DDE(Dynamic Data Exchange)的OLE(Object Linking and Embedding)做的,所以COM就是第二代的OLE,最早也叫OLE 2。

COM用的是类似C++实现virtual function的方式,COM client会用在virtual table机制下的一组method去调 COM server object,这样就解决了编译器的name mangling问题,所以它可以被很多不同的语言或者编译器调用,比如C/C++/VB/.Net/Delphi等。COM server一般就是以DLL或者EXE的形式。COM还有一些security、跨进程marshalling、线程模型之类的feature。

像DirectShow、Windows Media Foundation、DirectX等用的就是COM形式的API。

2.2 WinRT (Windows Runtime)

从Windows 8开始引入的,基于COM添加了各种扩展而构建的一种新的调用方式。

C++、JS以及.Net平台上的语言可以方便地用WinRT的API,比如对C++而言,是提供了一种标准之外的extension叫C++/CX来让它用简便的方式消费WinRT types。

2.3 .Net Framework

.Net Framework是Windows的一部分,下图是Windows版本默认安装的.Net Framework版本(可以装更新的.Net Framework版本,但是不能装更久的版本)。
在这里插入图片描述
.Net Framework主要由两个组件组成:

  • CLR(Common Language Runtime):.Net的runtime engine,包含将CIL(Common Intermediate Language)转换成底层的机器语言的JIT(Just In Time)编译器、GC、类型验证、code access security组件等等。
  • FCL(.Net Framework Class Library):一组实现好的类型集合,可以用于网络服务编程、数据库访问等等。

在这里插入图片描述


http://www.mrgr.cn/news/16597.html

相关文章:

  • 深入解析HarmonyOS Image组件的使用与优化
  • Windows服务器应急响应(下)
  • C语言:getchar()、putchar()及int、char之间的互相赋值
  • 【JavaScript】函数:arguments对象
  • fork入门
  • 手机充值的功能测试框架 - 测试要点
  • EXO项目StandardNode;max_generate_tokens;buffered_token_output;is_finished;
  • Unity实战案例全解析 之 背包/贩卖/锻造系统(左侧类图实现)
  • fastmock使用
  • Linux——IO模型_多路转接(epoll)
  • 【立体匹配】双目相机外参自标定方法介绍
  • 实现一个能设置MaxLine的LayoutManager
  • 【C++ 第十八章】C++11 新增语法(1)
  • 《软件工程导论》(第6版)第4章 形式化说明技术 复习笔记
  • VSCode+debugpy远程调试
  • 强推第一本给程序员看的AI Agent教程终于来啦!全方位解析LLM-Agent
  • 空岛战争的正确姿势
  • 【鸿蒙开发从0到1-day03】
  • 震惊!更换GPU会改变LLM的行为
  • 《高等代数》“爪”字型行列式