Copilot初体验

首先谷歌直接搜Copilot,然后直接点第一个。 用自己的github账号登陆后,然后需要激活体验版(白嫖2个月,后面10刀一个月),中间需要绑定支付方式,我直接用的paypal随便绑了一个银行卡。

然后就是Getting started with GitHub Copilot。

我先用的visual studio,有版本要求的。

GitHub Copilot is an AI pair programmer that helps you write code faster and with less work. Requires Visual Studio 2022 17.4.4 or later.

后来发现老版本也可以。 image.png

https://github.com/settings/copilot

image.png 开启Copilot之后,在注释后敲回车,Copilot便会给出答案。官方说的是按tab键采纳他的答案,但是我实际使用不行。后来去reddit和github看了下vs2022加Copilot的反馈,都说是一坨屎,但是vscode是可以使用的 image.png 在以前想写出这份代码,至少需要google CreateFile 然后进入https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea 然后再写参数,因为像GENERIC_READ\OPEN_EXIST宏是记不住的,因为C中的宏都是整型数字,位置填错编译器也不会报错,这就导致调用底层操作系统API很繁琐。在内核层就更繁琐了,参数随便就能到10个,根本不像python这种open('test.ext','rb')这样简单。

下面是内核层NtCreateFile函数的原型,windows内核使用的函数,用户层等效函数是CreateFile。

__kernel_entry NTSTATUS NtCreateFile(
  [out]          PHANDLE            FileHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in]           POBJECT_ATTRIBUTES ObjectAttributes,
  [out]          PIO_STATUS_BLOCK   IoStatusBlock,
  [in, optional] PLARGE_INTEGER     AllocationSize,
  [in]           ULONG              FileAttributes,
  [in]           ULONG              ShareAccess,
  [in]           ULONG              CreateDisposition,
  [in]           ULONG              CreateOptions,
  [in]           PVOID              EaBuffer,
  [in]           ULONG              EaLength
);

可以看到参数11个。每次写驱动都很痛苦,因为涉及到很多重复性的工作,每次都要去查NtCreateFile的文档,然后再定义一大堆变量,还容易出错,驱动调试也很麻烦。

方框内都是自动写的,我觉得还是不错的。能节省点时间。 image.png

https://github.com/orgs/community/discussions/29843

2023.4.3 visual studio支持不好的解决办法 image.png image.png 然后就会变成 image.png 就可以用右箭头自动补全了。