diff --git a/windows/security_windows.go b/windows/security_windows.go
index f5e725a..c605ee6 100644
--- a/windows/security_windows.go
+++ b/windows/security_windows.go
@@ -650,12 +650,12 @@
 // OpenCurrentProcessToken opens an access token associated with current
 // 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
 // TOKEN_QUERY token.
 func OpenCurrentProcessToken() (Token, error) {
 	var token Token
-	err := OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token)
+	err := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token)
 	return token, err
 }
 
diff --git a/windows/syscall_windows.go b/windows/syscall_windows.go
index 5734645..4ce8eaf 100644
--- a/windows/syscall_windows.go
+++ b/windows/syscall_windows.go
@@ -309,16 +309,32 @@
 
 // GetCurrentProcess returns the handle for the current process.
 // It is a pseudo handle that does not need to be closed.
-func GetCurrentProcess() Handle {
-	return Handle(^uintptr(1 - 1))
+// The returned error is always nil.
+//
+// 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.
 // It is a pseudo handle that does not need to be closed.
-func GetCurrentThread() Handle {
-	return Handle(^uintptr(2 - 1))
+// The returned error is always nil.
+//
+// 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
 // function from module by ordinal.
 func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) {
diff --git a/windows/syscall_windows_test.go b/windows/syscall_windows_test.go
index 6130cf2..a63df60 100644
--- a/windows/syscall_windows_test.go
+++ b/windows/syscall_windows_test.go
@@ -246,7 +246,7 @@
 }
 
 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 {
 		t.Fatal(err)
 	}
