mirror of
https://github.com/golang/sys.git
synced 2026-01-29 15:12:09 +03:00
134d130e1a049f4194ae9920ac9f96455cde360d
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>
sys
This repository holds supplemental Go packages for low-level interactions with the operating system.
Download/Install
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.
Report Issues / Send Patches
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.
Description
Languages
Go
85.7%
Assembly
12.3%
Shell
1.8%
C
0.1%