mirror of
https://github.com/golang/go
synced 2024-10-05 08:21:22 -06:00
78479163cb
New DLL and Proc types to manage and call dll functions. These were used to simplify syscall tests in runtime package. They were also used to implement LazyDLL and LazyProc. LazyProc, like Proc, now have Call function, that just a wrapper for SyscallN. It is not as efficient as Syscall, but easier to use. NewLazyDLL now supports non-ascii filenames. LazyDLL and LazyProc now have Load and Find methods. These can be used during runtime to discover if some dll functions are not present. All dll functions now return errors that fit os.Error interface. They also contain Windows error number. Some of these changes are suggested by jp. R=golang-dev, jp, rsc CC=golang-dev https://golang.org/cl/5272042
30 lines
1000 B
C
30 lines
1000 B
C
// Copyright 2009 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
extern void *runtime·LoadLibrary;
|
|
extern void *runtime·GetProcAddress;
|
|
|
|
// Call a Windows function with stdcall conventions,
|
|
// and switch to os stack during the call.
|
|
#pragma varargck countpos runtime·stdcall 2
|
|
#pragma varargck type runtime·stdcall void*
|
|
#pragma varargck type runtime·stdcall uintptr
|
|
void runtime·asmstdcall(void *c);
|
|
void *runtime·stdcall(void *fn, int32 count, ...);
|
|
|
|
uint32 runtime·getlasterror(void);
|
|
void runtime·setlasterror(uint32 err);
|
|
|
|
// Function to be called by windows CreateThread
|
|
// to start new os thread.
|
|
uint32 runtime·tstart_stdcall(M *newm);
|
|
|
|
uint32 runtime·issigpanic(uint32);
|
|
void runtime·sigpanic(void);
|
|
uint32 runtime·ctrlhandler(uint32 type);
|
|
|
|
// Windows dll function to go callback entry.
|
|
byte *runtime·compilecallback(Eface fn, bool cleanstack);
|
|
void *runtime·callbackasm(void);
|