windows: revert breaking API changes from CL 196798, add new accessor funcs

CL 196798 changed API and broke a number of projects.

Revert the signature changes but add new convenience functions instead.

Change-Id: I49e389204f4756ec054ba8fd7555e235ef6370e8
Reviewed-on: https://go-review.googlesource.com/c/sys/+/197597
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
Brad Fitzpatrick
2019-09-26 18:03:25 +00:00
parent 2837fb4f24
commit 855e68c859
3 changed files with 23 additions and 7 deletions
+2 -2
View File
@@ -650,12 +650,12 @@ type Token Handle
// OpenCurrentProcessToken opens an access token associated with current // OpenCurrentProcessToken opens an access token associated with current
// process with TOKEN_QUERY access. It is a real token that needs to be closed. // process with TOKEN_QUERY access. It is a real token that needs to be closed.
// //
// Deprecated: Explicitly call OpenProcessToken(GetCurrentProcess(), ...) // Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...)
// with the desired access instead, or use GetCurrentProcessToken for a // with the desired access instead, or use GetCurrentProcessToken for a
// TOKEN_QUERY token. // TOKEN_QUERY token.
func OpenCurrentProcessToken() (Token, error) { func OpenCurrentProcessToken() (Token, error) {
var token Token var token Token
err := OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token) err := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token)
return token, err return token, err
} }
+20 -4
View File
@@ -309,16 +309,32 @@ func NewCallbackCDecl(fn interface{}) uintptr {
// GetCurrentProcess returns the handle for the current process. // GetCurrentProcess returns the handle for the current process.
// It is a pseudo handle that does not need to be closed. // It is a pseudo handle that does not need to be closed.
func GetCurrentProcess() Handle { // The returned error is always nil.
return Handle(^uintptr(1 - 1)) //
// Deprecated: use CurrentProcess for the same Handle without the nil
// error.
func GetCurrentProcess() (Handle, error) {
return CurrentProcess(), nil
} }
// CurrentProcess returns the handle for the current process.
// It is a pseudo handle that does not need to be closed.
func CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) }
// GetCurrentThread returns the handle for the current thread. // GetCurrentThread returns the handle for the current thread.
// It is a pseudo handle that does not need to be closed. // It is a pseudo handle that does not need to be closed.
func GetCurrentThread() Handle { // The returned error is always nil.
return Handle(^uintptr(2 - 1)) //
// Deprecated: use CurrentThread for the same Handle without the nil
// error.
func GetCurrentThread() (Handle, error) {
return CurrentThread(), nil
} }
// CurrentThread returns the handle for the current thread.
// It is a pseudo handle that does not need to be closed.
func CurrentThread() Handle { return Handle(^uintptr(2 - 1)) }
// GetProcAddressByOrdinal retrieves the address of the exported // GetProcAddressByOrdinal retrieves the address of the exported
// function from module by ordinal. // function from module by ordinal.
func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) { func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) {
+1 -1
View File
@@ -246,7 +246,7 @@ func TestGetNamedSecurityInfo(t *testing.T) {
} }
func TestGetSecurityInfo(t *testing.T) { func TestGetSecurityInfo(t *testing.T) {
sd, err := windows.GetSecurityInfo(windows.GetCurrentProcess(), windows.SE_KERNEL_OBJECT, windows.DACL_SECURITY_INFORMATION) sd, err := windows.GetSecurityInfo(windows.CurrentProcess(), windows.SE_KERNEL_OBJECT, windows.DACL_SECURITY_INFORMATION)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }