commit | 134d130e1a049f4194ae9920ac9f96455cde360d | [log] [tgz] |
---|---|---|
author | Jason A. Donenfeld <Jason@zx2c4.com> | Sun Feb 28 01:06:24 2021 +0100 |
committer | Jason A. Donenfeld <Jason@zx2c4.com> | Wed Mar 03 07:41:36 2021 +0000 |
tree | e166487dd809df0039f2ae6c94478160672e782f | |
parent | 77cc2087c03b9062d8eb49dd60e665cbd7c1cde2 [diff] |
windows: add support for NTSTATUS values The native NT API returns error values from a different namespace as the usual Win32 one. This means it needs to be typed differently. This commit adds broad support for using NTSTATUS values in a new type called NTStatus. First we add the type as a basic uint32. Then we add all of the predefined constants from ntstatus.h, by augmenting mkerrors.bash to do automatic extraction. There's a convenece way to convert an NT error to a Win32 error, so we add the NTStatus.Errno() function. Since NTStatus is an error type, we define an Error() function that returns a string by asking ntdll.dll for its contents, in the exact same way that syscall.Errno.Error() does, by calling FormatMessage. Since functions need to actually use this, we add the rule that if a `//sys` declaration returns an error value called "ntstatus", then the type underlying the error interface is an NTStatus instead of an Errno. Finally we fix one function that was returning an error interface of an Errno rather than an NTStatus. Change-Id: I06296b9563bbec526759d12a19f13ac6ad46dcc3 Reviewed-on: https://go-review.googlesource.com/c/sys/+/297330 Trust: Jason A. Donenfeld <Jason@zx2c4.com> Trust: Alex Brainman <alex.brainman@gmail.com> Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This repository holds supplemental Go packages for low-level interactions with the operating system.
The easiest way to install is to run go get -u golang.org/x/sys
. You can also manually git clone the repository to $GOPATH/src/golang.org/x/sys
.
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html.
The main issue tracker for the sys repository is located at https://github.com/golang/go/issues. Prefix your issue with “x/sys:” in the subject line, so it is easy to find.