windows: use correct type for security attributes' descriptor member

The SECURITY_ATTRIBUTES struct always takes a SECURITY_DESCRIPTOR
pointer. Now that we've defined SECURITY_DESCRIPTOR, make
SECURITY_ATTRIBUTES properly specify the type. This eliminates the need
for terrible uintptr(unsafe.Pointer(...)) casts everywhere.

Change-Id: Ibbc85524cfe33589d43f963e10aa19d7f47686f2
Reviewed-on: https://go-review.googlesource.com/c/sys/+/196797
Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
diff --git a/windows/security_windows.go b/windows/security_windows.go
index 22dd83e..5b2f6ba 100644
--- a/windows/security_windows.go
+++ b/windows/security_windows.go
@@ -901,6 +901,12 @@
 	dacl     *ACL
 }
 
+type SecurityAttributes struct {
+	Length             uint32
+	SecurityDescriptor *SECURITY_DESCRIPTOR
+	InheritHandle      uint32
+}
+
 type SE_OBJECT_TYPE uint32
 
 // Constants for type SE_OBJECT_TYPE
diff --git a/windows/types_windows.go b/windows/types_windows.go
index 8d34bf1..a548234 100644
--- a/windows/types_windows.go
+++ b/windows/types_windows.go
@@ -471,12 +471,6 @@
 	return
 }
 
-type SecurityAttributes struct {
-	Length             uint32
-	SecurityDescriptor uintptr
-	InheritHandle      uint32
-}
-
 type Overlapped struct {
 	Internal     uintptr
 	InternalHigh uintptr