@ -33,9 +33,6 @@ func errnoErr(e syscall.Errno) error {
case errnoERROR_IO_PENDING :
return errERROR_IO_PENDING
}
// TODO: add more here, after collecting data on the common
// error values see on Windows. (perhaps when running
// all.bat?)
return e
}
@ -45,38 +42,34 @@ var (
modntdll = windows . NewLazySystemDLL ( "ntdll.dll" )
modws2_32 = windows . NewLazySystemDLL ( "ws2_32.dll" )
procAdjustTokenPrivileges = modadvapi32 . NewProc ( "AdjustTokenPrivileges" )
procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32 . NewProc ( "ConvertSecurityDescriptorToStringSecurityDescriptorW" )
procConvertSidToStringSidW = modadvapi32 . NewProc ( "ConvertSidToStringSidW" )
procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32 . NewProc ( "ConvertStringSecurityDescriptorToSecurityDescriptorW" )
procConvertStringSidToSidW = modadvapi32 . NewProc ( "ConvertStringSidToSidW" )
procGetSecurityDescriptorLength = modadvapi32 . NewProc ( "GetSecurityDescriptorLength" )
procImpersonateSelf = modadvapi32 . NewProc ( "ImpersonateSelf" )
procLookupAccountNameW = modadvapi32 . NewProc ( "LookupAccountNameW" )
procLookupAccountSidW = modadvapi32 . NewProc ( "LookupAccountSidW" )
procLookupPrivilegeDisplayNameW = modadvapi32 . NewProc ( "LookupPrivilegeDisplayNameW" )
procLookupPrivilegeNameW = modadvapi32 . NewProc ( "LookupPrivilegeNameW" )
procLookupPrivilegeValueW = modadvapi32 . NewProc ( "LookupPrivilegeValueW" )
procOpenThreadToken = modadvapi32 . NewProc ( "OpenThreadToken" )
procRevertToSelf = modadvapi32 . NewProc ( "RevertToSelf" )
procBackupRead = modkernel32 . NewProc ( "BackupRead" )
procBackupWrite = modkernel32 . NewProc ( "BackupWrite" )
procCancelIoEx = modkernel32 . NewProc ( "CancelIoEx" )
procConnectNamedPipe = modkernel32 . NewProc ( "ConnectNamedPipe" )
procCreateIoCompletionPort = modkernel32 . NewProc ( "CreateIoCompletionPort" )
procCreateNamedPipeW = modkernel32 . NewProc ( "CreateNamedPipeW" )
procGetCurrentThread = modkernel32 . NewProc ( "GetCurrentThread" )
procGetNamedPipeHandleStateW = modkernel32 . NewProc ( "GetNamedPipeHandleStateW" )
procGetNamedPipeInfo = modkernel32 . NewProc ( "GetNamedPipeInfo" )
procGetQueuedCompletionStatus = modkernel32 . NewProc ( "GetQueuedCompletionStatus" )
procLocalAlloc = modkernel32 . NewProc ( "LocalAlloc" )
procLocalFree = modkernel32 . NewProc ( "LocalFree" )
procSetFileCompletionNotificationModes = modkernel32 . NewProc ( "SetFileCompletionNotificationModes" )
procNtCreateNamedPipeFile = modntdll . NewProc ( "NtCreateNamedPipeFile" )
procRtlDefaultNpAcl = modntdll . NewProc ( "RtlDefaultNpAcl" )
procRtlDosPathNameToNtPathName_U = modntdll . NewProc ( "RtlDosPathNameToNtPathName_U" )
procRtlNtStatusToDosErrorNoTeb = modntdll . NewProc ( "RtlNtStatusToDosErrorNoTeb" )
procWSAGetOverlappedResult = modws2_32 . NewProc ( "WSAGetOverlappedResult" )
procAdjustTokenPrivileges = modadvapi32 . NewProc ( "AdjustTokenPrivileges" )
procConvertSidToStringSidW = modadvapi32 . NewProc ( "ConvertSidToStringSidW" )
procConvertStringSidToSidW = modadvapi32 . NewProc ( "ConvertStringSidToSidW" )
procImpersonateSelf = modadvapi32 . NewProc ( "ImpersonateSelf" )
procLookupAccountNameW = modadvapi32 . NewProc ( "LookupAccountNameW" )
procLookupAccountSidW = modadvapi32 . NewProc ( "LookupAccountSidW" )
procLookupPrivilegeDisplayNameW = modadvapi32 . NewProc ( "LookupPrivilegeDisplayNameW" )
procLookupPrivilegeNameW = modadvapi32 . NewProc ( "LookupPrivilegeNameW" )
procLookupPrivilegeValueW = modadvapi32 . NewProc ( "LookupPrivilegeValueW" )
procOpenThreadToken = modadvapi32 . NewProc ( "OpenThreadToken" )
procRevertToSelf = modadvapi32 . NewProc ( "RevertToSelf" )
procBackupRead = modkernel32 . NewProc ( "BackupRead" )
procBackupWrite = modkernel32 . NewProc ( "BackupWrite" )
procCancelIoEx = modkernel32 . NewProc ( "CancelIoEx" )
procConnectNamedPipe = modkernel32 . NewProc ( "ConnectNamedPipe" )
procCreateIoCompletionPort = modkernel32 . NewProc ( "CreateIoCompletionPort" )
procCreateNamedPipeW = modkernel32 . NewProc ( "CreateNamedPipeW" )
procDisconnectNamedPipe = modkernel32 . NewProc ( "DisconnectNamedPipe" )
procGetCurrentThread = modkernel32 . NewProc ( "GetCurrentThread" )
procGetNamedPipeHandleStateW = modkernel32 . NewProc ( "GetNamedPipeHandleStateW" )
procGetNamedPipeInfo = modkernel32 . NewProc ( "GetNamedPipeInfo" )
procGetQueuedCompletionStatus = modkernel32 . NewProc ( "GetQueuedCompletionStatus" )
procSetFileCompletionNotificationModes = modkernel32 . NewProc ( "SetFileCompletionNotificationModes" )
procNtCreateNamedPipeFile = modntdll . NewProc ( "NtCreateNamedPipeFile" )
procRtlDefaultNpAcl = modntdll . NewProc ( "RtlDefaultNpAcl" )
procRtlDosPathNameToNtPathName_U = modntdll . NewProc ( "RtlDosPathNameToNtPathName_U" )
procRtlNtStatusToDosErrorNoTeb = modntdll . NewProc ( "RtlNtStatusToDosErrorNoTeb" )
procWSAGetOverlappedResult = modws2_32 . NewProc ( "WSAGetOverlappedResult" )
)
func adjustTokenPrivileges ( token windows . Token , releaseAll bool , input * byte , outputSize uint32 , output * byte , requiredSize * uint32 ) ( success bool , err error ) {
@ -84,7 +77,7 @@ func adjustTokenPrivileges(token windows.Token, releaseAll bool, input *byte, ou
if releaseAll {
_p0 = 1
}
r0 , _ , e1 := syscall . Syscall6 ( procAdjustTokenPrivileges . Addr ( ) , 6 , uintptr ( token ) , uintptr ( _p0 ) , uintptr ( unsafe . Pointer ( input ) ) , uintptr ( outputSize ) , uintptr ( unsafe . Pointer ( output ) ) , uintptr ( unsafe . Pointer ( requiredSize ) ) )
r0 , _ , e1 := syscall . SyscallN ( procAdjustTokenPrivileges . Addr ( ) , uintptr ( token ) , uintptr ( _p0 ) , uintptr ( unsafe . Pointer ( input ) ) , uintptr ( outputSize ) , uintptr ( unsafe . Pointer ( output ) ) , uintptr ( unsafe . Pointer ( requiredSize ) ) )
success = r0 != 0
if true {
err = errnoErr ( e1 )
@ -92,33 +85,8 @@ func adjustTokenPrivileges(token windows.Token, releaseAll bool, input *byte, ou
return
}
func convertSecurityDescriptorToStringSecurityDescriptor ( sd * byte , revision uint32 , secInfo uint32 , sddl * * uint16 , sddlSize * uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall6 ( procConvertSecurityDescriptorToStringSecurityDescriptorW . Addr ( ) , 5 , uintptr ( unsafe . Pointer ( sd ) ) , uintptr ( revision ) , uintptr ( secInfo ) , uintptr ( unsafe . Pointer ( sddl ) ) , uintptr ( unsafe . Pointer ( sddlSize ) ) , 0 )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func convertSidToStringSid ( sid * byte , str * * uint16 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall ( procConvertSidToStringSidW . Addr ( ) , 2 , uintptr ( unsafe . Pointer ( sid ) ) , uintptr ( unsafe . Pointer ( str ) ) , 0 )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func convertStringSecurityDescriptorToSecurityDescriptor ( str string , revision uint32 , sd * uintptr , size * uint32 ) ( err error ) {
var _p0 * uint16
_p0 , err = syscall . UTF16PtrFromString ( str )
if err != nil {
return
}
return _convertStringSecurityDescriptorToSecurityDescriptor ( _p0 , revision , sd , size )
}
func _convertStringSecurityDescriptorToSecurityDescriptor ( str * uint16 , revision uint32 , sd * uintptr , size * uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall6 ( procConvertStringSecurityDescriptorToSecurityDescriptorW . Addr ( ) , 4 , uintptr ( unsafe . Pointer ( str ) ) , uintptr ( revision ) , uintptr ( unsafe . Pointer ( sd ) ) , uintptr ( unsafe . Pointer ( size ) ) , 0 , 0 )
r1 , _ , e1 := syscall . SyscallN ( procConvertSidToStringSidW . Addr ( ) , uintptr ( unsafe . Pointer ( sid ) ) , uintptr ( unsafe . Pointer ( str ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
@ -126,21 +94,15 @@ func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision
}
func convertStringSidToSid ( str * uint16 , sid * * byte ) ( err error ) {
r1 , _ , e1 := syscall . Syscall ( procConvertStringSidToSidW . Addr ( ) , 2 , uintptr ( unsafe . Pointer ( str ) ) , uintptr ( unsafe . Pointer ( sid ) ) , 0 )
r1 , _ , e1 := syscall . SyscallN ( procConvertStringSidToSidW . Addr ( ) , uintptr ( unsafe . Pointer ( str ) ) , uintptr ( unsafe . Pointer ( sid ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func getSecurityDescriptorLength ( sd uintptr ) ( len uint32 ) {
r0 , _ , _ := syscall . Syscall ( procGetSecurityDescriptorLength . Addr ( ) , 1 , uintptr ( sd ) , 0 , 0 )
len = uint32 ( r0 )
return
}
func impersonateSelf ( level uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall ( procImpersonateSelf . Addr ( ) , 1 , uintptr ( level ) , 0 , 0 )
r1 , _ , e1 := syscall . SyscallN ( procImpersonateSelf . Addr ( ) , uintptr ( level ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
@ -157,7 +119,7 @@ func lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSiz
}
func _lookupAccountName ( systemName * uint16 , accountName * uint16 , sid * byte , sidSize * uint32 , refDomain * uint16 , refDomainSize * uint32 , sidNameUse * uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall9 ( procLookupAccountNameW . Addr ( ) , 7 , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( accountName ) ) , uintptr ( unsafe . Pointer ( sid ) ) , uintptr ( unsafe . Pointer ( sidSize ) ) , uintptr ( unsafe . Pointer ( refDomain ) ) , uintptr ( unsafe . Pointer ( refDomainSize ) ) , uintptr ( unsafe . Pointer ( sidNameUse ) ) , 0 , 0 )
r1 , _ , e1 := syscall . SyscallN ( procLookupAccountNameW . Addr ( ) , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( accountName ) ) , uintptr ( unsafe . Pointer ( sid ) ) , uintptr ( unsafe . Pointer ( sidSize ) ) , uintptr ( unsafe . Pointer ( refDomain ) ) , uintptr ( unsafe . Pointer ( refDomainSize ) ) , uintptr ( unsafe . Pointer ( sidNameUse ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
@ -165,7 +127,7 @@ func _lookupAccountName(systemName *uint16, accountName *uint16, sid *byte, sidS
}
func lookupAccountSid ( systemName * uint16 , sid * byte , name * uint16 , nameSize * uint32 , refDomain * uint16 , refDomainSize * uint32 , sidNameUse * uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall9 ( procLookupAccountSidW . Addr ( ) , 7 , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( sid ) ) , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( unsafe . Pointer ( nameSize ) ) , uintptr ( unsafe . Pointer ( refDomain ) ) , uintptr ( unsafe . Pointer ( refDomainSize ) ) , uintptr ( unsafe . Pointer ( sidNameUse ) ) , 0 , 0 )
r1 , _ , e1 := syscall . SyscallN ( procLookupAccountSidW . Addr ( ) , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( sid ) ) , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( unsafe . Pointer ( nameSize ) ) , uintptr ( unsafe . Pointer ( refDomain ) ) , uintptr ( unsafe . Pointer ( refDomainSize ) ) , uintptr ( unsafe . Pointer ( sidNameUse ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
@ -182,7 +144,7 @@ func lookupPrivilegeDisplayName(systemName string, name *uint16, buffer *uint16,
}
func _lookupPrivilegeDisplayName ( systemName * uint16 , name * uint16 , buffer * uint16 , size * uint32 , languageId * uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall6 ( procLookupPrivilegeDisplayNameW . Addr ( ) , 5 , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( unsafe . Pointer ( buffer ) ) , uintptr ( unsafe . Pointer ( size ) ) , uintptr ( unsafe . Pointer ( languageId ) ) , 0 )
r1 , _ , e1 := syscall . SyscallN ( procLookupPrivilegeDisplayNameW . Addr ( ) , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( unsafe . Pointer ( buffer ) ) , uintptr ( unsafe . Pointer ( size ) ) , uintptr ( unsafe . Pointer ( languageId ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
@ -199,7 +161,7 @@ func lookupPrivilegeName(systemName string, luid *uint64, buffer *uint16, size *
}
func _lookupPrivilegeName ( systemName * uint16 , luid * uint64 , buffer * uint16 , size * uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall6 ( procLookupPrivilegeNameW . Addr ( ) , 4 , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( luid ) ) , uintptr ( unsafe . Pointer ( buffer ) ) , uintptr ( unsafe . Pointer ( size ) ) , 0 , 0 )
r1 , _ , e1 := syscall . SyscallN ( procLookupPrivilegeNameW . Addr ( ) , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( luid ) ) , uintptr ( unsafe . Pointer ( buffer ) ) , uintptr ( unsafe . Pointer ( size ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
@ -221,19 +183,19 @@ func lookupPrivilegeValue(systemName string, name string, luid *uint64) (err err
}
func _lookupPrivilegeValue ( systemName * uint16 , name * uint16 , luid * uint64 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall ( procLookupPrivilegeValueW . Addr ( ) , 3 , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( unsafe . Pointer ( luid ) ) )
r1 , _ , e1 := syscall . SyscallN ( procLookupPrivilegeValueW . Addr ( ) , uintptr ( unsafe . Pointer ( systemName ) ) , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( unsafe . Pointer ( luid ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func openThreadToken ( thread syscall . Handle , accessMask uint32 , openAsSelf bool , token * windows . Token ) ( err error ) {
func openThreadToken ( thread windows . Handle , accessMask uint32 , openAsSelf bool , token * windows . Token ) ( err error ) {
var _p0 uint32
if openAsSelf {
_p0 = 1
}
r1 , _ , e1 := syscall . Syscall6 ( procOpenThreadToken . Addr ( ) , 4 , uintptr ( thread ) , uintptr ( accessMask ) , uintptr ( _p0 ) , uintptr ( unsafe . Pointer ( token ) ) , 0 , 0 )
r1 , _ , e1 := syscall . SyscallN ( procOpenThreadToken . Addr ( ) , uintptr ( thread ) , uintptr ( accessMask ) , uintptr ( _p0 ) , uintptr ( unsafe . Pointer ( token ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
@ -241,14 +203,14 @@ func openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool,
}
func revertToSelf ( ) ( err error ) {
r1 , _ , e1 := syscall . Syscall ( procRevertToSelf . Addr ( ) , 0 , 0 , 0 , 0 )
r1 , _ , e1 := syscall . SyscallN ( procRevertToSelf . Addr ( ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func backupRead ( h syscall . Handle , b [ ] byte , bytesRead * uint32 , abort bool , processSecurity bool , context * uintptr ) ( err error ) {
func backupRead ( h windows . Handle , b [ ] byte , bytesRead * uint32 , abort bool , processSecurity bool , context * uintptr ) ( err error ) {
var _p0 * byte
if len ( b ) > 0 {
_p0 = & b [ 0 ]
@ -261,14 +223,14 @@ func backupRead(h syscall.Handle, b []byte, bytesRead *uint32, abort bool, proce
if processSecurity {
_p2 = 1
}
r1 , _ , e1 := syscall . Syscall9 ( procBackupRead . Addr ( ) , 7 , uintptr ( h ) , uintptr ( unsafe . Pointer ( _p0 ) ) , uintptr ( len ( b ) ) , uintptr ( unsafe . Pointer ( bytesRead ) ) , uintptr ( _p1 ) , uintptr ( _p2 ) , uintptr ( unsafe . Pointer ( context ) ) , 0 , 0 )
r1 , _ , e1 := syscall . SyscallN ( procBackupRead . Addr ( ) , uintptr ( h ) , uintptr ( unsafe . Pointer ( _p0 ) ) , uintptr ( len ( b ) ) , uintptr ( unsafe . Pointer ( bytesRead ) ) , uintptr ( _p1 ) , uintptr ( _p2 ) , uintptr ( unsafe . Pointer ( context ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func backupWrite ( h syscall . Handle , b [ ] byte , bytesWritten * uint32 , abort bool , processSecurity bool , context * uintptr ) ( err error ) {
func backupWrite ( h windows . Handle , b [ ] byte , bytesWritten * uint32 , abort bool , processSecurity bool , context * uintptr ) ( err error ) {
var _p0 * byte
if len ( b ) > 0 {
_p0 = & b [ 0 ]
@ -281,39 +243,39 @@ func backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, p
if processSecurity {
_p2 = 1
}
r1 , _ , e1 := syscall . Syscall9 ( procBackupWrite . Addr ( ) , 7 , uintptr ( h ) , uintptr ( unsafe . Pointer ( _p0 ) ) , uintptr ( len ( b ) ) , uintptr ( unsafe . Pointer ( bytesWritten ) ) , uintptr ( _p1 ) , uintptr ( _p2 ) , uintptr ( unsafe . Pointer ( context ) ) , 0 , 0 )
r1 , _ , e1 := syscall . SyscallN ( procBackupWrite . Addr ( ) , uintptr ( h ) , uintptr ( unsafe . Pointer ( _p0 ) ) , uintptr ( len ( b ) ) , uintptr ( unsafe . Pointer ( bytesWritten ) ) , uintptr ( _p1 ) , uintptr ( _p2 ) , uintptr ( unsafe . Pointer ( context ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func cancelIoEx ( file syscall . Handle , o * syscall . Overlapped ) ( err error ) {
r1 , _ , e1 := syscall . Syscall ( procCancelIoEx . Addr ( ) , 2 , uintptr ( file ) , uintptr ( unsafe . Pointer ( o ) ) , 0 )
func cancelIoEx ( file windows . Handle , o * windows . Overlapped ) ( err error ) {
r1 , _ , e1 := syscall . SyscallN ( procCancelIoEx . Addr ( ) , uintptr ( file ) , uintptr ( unsafe . Pointer ( o ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func connectNamedPipe ( pipe syscall . Handle , o * syscall . Overlapped ) ( err error ) {
r1 , _ , e1 := syscall . Syscall ( procConnectNamedPipe . Addr ( ) , 2 , uintptr ( pipe ) , uintptr ( unsafe . Pointer ( o ) ) , 0 )
func connectNamedPipe ( pipe windows . Handle , o * windows . Overlapped ) ( err error ) {
r1 , _ , e1 := syscall . SyscallN ( procConnectNamedPipe . Addr ( ) , uintptr ( pipe ) , uintptr ( unsafe . Pointer ( o ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func createIoCompletionPort ( file syscall . Handle , port syscall . Handle , key uintptr , threadCount uint32 ) ( newport syscall . Handle , err error ) {
r0 , _ , e1 := syscall . Syscall6 ( procCreateIoCompletionPort . Addr ( ) , 4 , uintptr ( file ) , uintptr ( port ) , uintptr ( key ) , uintptr ( threadCount ) , 0 , 0 )
newport = syscall . Handle ( r0 )
func createIoCompletionPort ( file windows . Handle , port windows . Handle , key uintptr , threadCount uint32 ) ( newport windows . Handle , err error ) {
r0 , _ , e1 := syscall . SyscallN ( procCreateIoCompletionPort . Addr ( ) , uintptr ( file ) , uintptr ( port ) , uintptr ( key ) , uintptr ( threadCount ) )
newport = windows . Handle ( r0 )
if newport == 0 {
err = errnoErr ( e1 )
}
return
}
func createNamedPipe ( name string , flags uint32 , pipeMode uint32 , maxInstances uint32 , outSize uint32 , inSize uint32 , defaultTimeout uint32 , sa * syscall . SecurityAttributes ) ( handle syscall . Handle , err error ) {
func createNamedPipe ( name string , flags uint32 , pipeMode uint32 , maxInstances uint32 , outSize uint32 , inSize uint32 , defaultTimeout uint32 , sa * windows . SecurityAttributes ) ( handle windows . Handle , err error ) {
var _p0 * uint16
_p0 , err = syscall . UTF16PtrFromString ( name )
if err != nil {
@ -322,96 +284,93 @@ func createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances ui
return _createNamedPipe ( _p0 , flags , pipeMode , maxInstances , outSize , inSize , defaultTimeout , sa )
}
func _createNamedPipe ( name * uint16 , flags uint32 , pipeMode uint32 , maxInstances uint32 , outSize uint32 , inSize uint32 , defaultTimeout uint32 , sa * syscall . SecurityAttributes ) ( handle syscall . Handle , err error ) {
r0 , _ , e1 := syscall . Syscall9 ( procCreateNamedPipeW . Addr ( ) , 8 , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( flags ) , uintptr ( pipeMode ) , uintptr ( maxInstances ) , uintptr ( outSize ) , uintptr ( inSize ) , uintptr ( defaultTimeout ) , uintptr ( unsafe . Pointer ( sa ) ) , 0 )
handle = syscall . Handle ( r0 )
if handle == syscall . InvalidHandle {
func _createNamedPipe ( name * uint16 , flags uint32 , pipeMode uint32 , maxInstances uint32 , outSize uint32 , inSize uint32 , defaultTimeout uint32 , sa * windows . SecurityAttributes ) ( handle windows . Handle , err error ) {
r0 , _ , e1 := syscall . SyscallN ( procCreateNamedPipeW . Addr ( ) , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( flags ) , uintptr ( pipeMode ) , uintptr ( maxInstances ) , uintptr ( outSize ) , uintptr ( inSize ) , uintptr ( defaultTimeout ) , uintptr ( unsafe . Pointer ( sa ) ) )
handle = windows . Handle ( r0 )
if handle == windows . InvalidHandle {
err = errnoErr ( e1 )
}
return
}
func getCurrentThread ( ) ( h syscall . Handle ) {
r0 , _ , _ := syscall . Syscall ( procGetCurrentThread . Addr ( ) , 0 , 0 , 0 , 0 )
h = syscall . Handle ( r0 )
return
}
func getNamedPipeHandleState ( pipe syscall . Handle , state * uint32 , curInstances * uint32 , maxCollectionCount * uint32 , collectDataTimeout * uint32 , userName * uint16 , maxUserNameSize uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall9 ( procGetNamedPipeHandleStateW . Addr ( ) , 7 , uintptr ( pipe ) , uintptr ( unsafe . Pointer ( state ) ) , uintptr ( unsafe . Pointer ( curInstances ) ) , uintptr ( unsafe . Pointer ( maxCollectionCount ) ) , uintptr ( unsafe . Pointer ( collectDataTimeout ) ) , uintptr ( unsafe . Pointer ( userName ) ) , uintptr ( maxUserNameSize ) , 0 , 0 )
func disconnectNamedPipe ( pipe windows . Handle ) ( err error ) {
r1 , _ , e1 := syscall . SyscallN ( procDisconnectNamedPipe . Addr ( ) , uintptr ( pipe ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func getNamedPipeInfo ( pipe syscall . Handle , flags * uint32 , outSize * uint32 , inSize * uint32 , maxInstances * uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall6 ( procGetNamedPipeInfo . Addr ( ) , 5 , uintptr ( pipe ) , uintptr ( unsafe . Pointer ( flags ) ) , uintptr ( unsafe . Pointer ( outSize ) ) , uintptr ( unsafe . Pointer ( inSize ) ) , uintptr ( unsafe . Pointer ( maxInstances ) ) , 0 )
if r1 == 0 {
err = errnoErr ( e1 )
}
func getCurrentThread ( ) ( h windows . Handle ) {
r0 , _ , _ := syscall . SyscallN ( procGetCurrentThread . Addr ( ) )
h = windows . Handle ( r0 )
return
}
func getQueuedCompletionStatus ( port syscall . Handle , bytes * uint32 , key * uintptr , o * * ioOperation , timeout uint32 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall6 ( procGetQueuedCompletionStatus . Addr ( ) , 5 , uintptr ( p ort) , uintptr ( unsafe . Pointer ( byt es) ) , uintptr ( unsafe . Pointer ( key ) ) , uintptr ( unsafe . Pointer ( o ) ) , uintptr ( timeout ) , 0 )
func getNamedPipeHandleState ( pipe windows . Handle , state * uint32 , curInstances * uint32 , maxCollectionCount * uint32 , collectDataTimeout * uint32 , userName * uint16 , maxUserNameSize uint32 ) ( err error ) {
r1 , _ , e1 := syscall . SyscallN ( procGetNamedPipeHandleStateW . Addr ( ) , uintptr ( pipe ) , uintptr ( unsafe . P ointe r( s tate ) ) , uintptr ( unsafe . Pointer ( curInstanc es) ) , uintptr ( unsafe . Pointer ( maxCollectionCount ) ) , uintptr ( unsafe . Pointer ( c ollectDataTimeout ) ) , uintptr ( unsafe . Pointer ( userName ) ) , uintptr ( maxUserNameSize ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func localAlloc ( uFlags uint32 , length uint32 ) ( ptr uintptr ) {
r0 , _ , _ := syscall . Syscall ( procLocalAlloc . Addr ( ) , 2 , uintptr ( uFlags ) , uintptr ( length ) , 0 )
ptr = uintptr ( r0 )
func getNamedPipeInfo ( pipe windows . Handle , flags * uint32 , outSize * uint32 , inSize * uint32 , maxInstances * uint32 ) ( err error ) {
r1 , _ , e1 := syscall . SyscallN ( procGetNamedPipeInfo . Addr ( ) , uintptr ( pipe ) , uintptr ( unsafe . Pointer ( flags ) ) , uintptr ( unsafe . Pointer ( outSize ) ) , uintptr ( unsafe . Pointer ( inSize ) ) , uintptr ( unsafe . Pointer ( maxInstances ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func localFree ( mem uintptr ) {
syscall . Syscall ( procLocalFree . Addr ( ) , 1 , uintptr ( mem ) , 0 , 0 )
func getQueuedCompletionStatus ( port windows . Handle , bytes * uint32 , key * uintptr , o * * ioOperation , timeout uint32 ) ( err error ) {
r1 , _ , e1 := syscall . SyscallN ( procGetQueuedCompletionStatus . Addr ( ) , uintptr ( port ) , uintptr ( unsafe . Pointer ( bytes ) ) , uintptr ( unsafe . Pointer ( key ) ) , uintptr ( unsafe . Pointer ( o ) ) , uintptr ( timeout ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func setFileCompletionNotificationModes ( h syscall . Handle , flags uint8 ) ( err error ) {
r1 , _ , e1 := syscall . Syscall ( procSetFileCompletionNotificationModes . Addr ( ) , 2 , uintptr ( h ) , uintptr ( flags ) , 0 )
func setFileCompletionNotificationModes ( h windows . Handle , flags uint8 ) ( err error ) {
r1 , _ , e1 := syscall . SyscallN ( procSetFileCompletionNotificationModes . Addr ( ) , uintptr ( h ) , uintptr ( flags ) )
if r1 == 0 {
err = errnoErr ( e1 )
}
return
}
func ntCreateNamedPipeFile ( pipe * syscall . Handle , access uint32 , oa * objectAttributes , iosb * ioStatusBlock , share uint32 , disposition uint32 , options uint32 , typ uint32 , readMode uint32 , completionMode uint32 , maxInstances uint32 , inboundQuota uint32 , outputQuota uint32 , timeout * int64 ) ( status ntStatus ) {
r0 , _ , _ := syscall . Syscall15 ( procNtCreateNamedPipeFile . Addr ( ) , 14 , uintptr ( unsafe . Pointer ( pipe ) ) , uintptr ( access ) , uintptr ( unsafe . Pointer ( oa ) ) , uintptr ( unsafe . Pointer ( iosb ) ) , uintptr ( share ) , uintptr ( disposition ) , uintptr ( options ) , uintptr ( typ ) , uintptr ( readMode ) , uintptr ( completionMode ) , uintptr ( maxInstances ) , uintptr ( inboundQuota ) , uintptr ( outputQuota ) , uintptr ( unsafe . Pointer ( timeout ) ) , 0 )
func ntCreateNamedPipeFile ( pipe * windows . Handle , access ntAccessMask , oa * objectAttributes , iosb * ioStatusBlock , share ntFileShareMode , disposition ntFileCreationDisposition , options ntFileOptions , typ uint32 , readMode uint32 , completionMode uint32 , maxInstances uint32 , inboundQuota uint32 , outputQuota uint32 , timeout * int64 ) ( status ntStatus ) {
r0 , _ , _ := syscall . SyscallN ( procNtCreateNamedPipeFile . Addr ( ) , uintptr ( unsafe . Pointer ( pipe ) ) , uintptr ( access ) , uintptr ( unsafe . Pointer ( oa ) ) , uintptr ( unsafe . Pointer ( iosb ) ) , uintptr ( share ) , uintptr ( disposition ) , uintptr ( options ) , uintptr ( typ ) , uintptr ( readMode ) , uintptr ( completionMode ) , uintptr ( maxInstances ) , uintptr ( inboundQuota ) , uintptr ( outputQuota ) , uintptr ( unsafe . Pointer ( timeout ) ) )
status = ntStatus ( r0 )
return
}
func rtlDefaultNpAcl ( dacl * uintptr ) ( status ntStatus ) {
r0 , _ , _ := syscall . Syscall ( procRtlDefaultNpAcl . Addr ( ) , 1 , uintptr ( unsafe . Pointer ( dacl ) ) , 0 , 0 )
r0 , _ , _ := syscall . SyscallN ( procRtlDefaultNpAcl . Addr ( ) , uintptr ( unsafe . Pointer ( dacl ) ) )
status = ntStatus ( r0 )
return
}
func rtlDosPathNameToNtPathName ( name * uint16 , ntName * unicodeString , filePart uintptr , reserved uintptr ) ( status ntStatus ) {
r0 , _ , _ := syscall . Syscall6 ( procRtlDosPathNameToNtPathName_U . Addr ( ) , 4 , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( unsafe . Pointer ( ntName ) ) , uintptr ( filePart ) , uintptr ( reserved ) , 0 , 0 )
r0 , _ , _ := syscall . SyscallN ( procRtlDosPathNameToNtPathName_U . Addr ( ) , uintptr ( unsafe . Pointer ( name ) ) , uintptr ( unsafe . Pointer ( ntName ) ) , uintptr ( filePart ) , uintptr ( reserved ) )
status = ntStatus ( r0 )
return
}
func rtlNtStatusToDosError ( status ntStatus ) ( winerr error ) {
r0 , _ , _ := syscall . Syscall ( procRtlNtStatusToDosErrorNoTeb . Addr ( ) , 1 , uintptr ( status ) , 0 , 0 )
r0 , _ , _ := syscall . SyscallN ( procRtlNtStatusToDosErrorNoTeb . Addr ( ) , uintptr ( status ) )
if r0 != 0 {
winerr = syscall . Errno ( r0 )
}
return
}
func wsaGetOverlappedResult ( h syscall . Handle , o * syscall . Overlapped , bytes * uint32 , wait bool , flags * uint32 ) ( err error ) {
func wsaGetOverlappedResult ( h windows . Handle , o * windows . Overlapped , bytes * uint32 , wait bool , flags * uint32 ) ( err error ) {
var _p0 uint32
if wait {
_p0 = 1
}
r1 , _ , e1 := syscall . Syscall6 ( procWSAGetOverlappedResult . Addr ( ) , 5 , uintptr ( h ) , uintptr ( unsafe . Pointer ( o ) ) , uintptr ( unsafe . Pointer ( bytes ) ) , uintptr ( _p0 ) , uintptr ( unsafe . Pointer ( flags ) ) , 0 )
r1 , _ , e1 := syscall . SyscallN ( procWSAGetOverlappedResult . Addr ( ) , uintptr ( h ) , uintptr ( unsafe . Pointer ( o ) ) , uintptr ( unsafe . Pointer ( bytes ) ) , uintptr ( _p0 ) , uintptr ( unsafe . Pointer ( flags ) ) )
if r1 == 0 {
err = errnoErr ( e1 )
}