mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
update dependencies
This commit is contained in:
parent
95ebbb9d13
commit
d2678be96d
4
go.mod
4
go.mod
@ -4,6 +4,6 @@ go 1.16
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/mattn/go-sqlite3 v1.14.7
|
github.com/mattn/go-sqlite3 v1.14.7
|
||||||
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420
|
golang.org/x/net v0.8.0
|
||||||
golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6
|
golang.org/x/sys v0.6.0
|
||||||
)
|
)
|
||||||
|
41
go.sum
41
go.sum
@ -1,12 +1,39 @@
|
|||||||
github.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA=
|
github.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA=
|
||||||
github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||||
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420 h1:a8jGStKg0XqKDlKqjLrXn0ioF5MH36pT7Z0BRTqLhbk=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
|
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
|
||||||
|
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6 h1:cdsMqa2nXzqlgs183pHxtvoVwU7CyzaCTAUOg94af4c=
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||||
|
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
|
||||||
|
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
3
vendor/golang.org/x/net/AUTHORS
generated
vendored
3
vendor/golang.org/x/net/AUTHORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code refers to The Go Authors for copyright purposes.
|
|
||||||
# The master list of authors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/AUTHORS.
|
|
3
vendor/golang.org/x/net/CONTRIBUTORS
generated
vendored
3
vendor/golang.org/x/net/CONTRIBUTORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code was written by the Go contributors.
|
|
||||||
# The master list of contributors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/CONTRIBUTORS.
|
|
15
vendor/golang.org/x/net/html/doc.go
generated
vendored
15
vendor/golang.org/x/net/html/doc.go
generated
vendored
@ -92,6 +92,21 @@ example, to process each anchor node in depth-first order:
|
|||||||
The relevant specifications include:
|
The relevant specifications include:
|
||||||
https://html.spec.whatwg.org/multipage/syntax.html and
|
https://html.spec.whatwg.org/multipage/syntax.html and
|
||||||
https://html.spec.whatwg.org/multipage/syntax.html#tokenization
|
https://html.spec.whatwg.org/multipage/syntax.html#tokenization
|
||||||
|
|
||||||
|
# Security Considerations
|
||||||
|
|
||||||
|
Care should be taken when parsing and interpreting HTML, whether full documents
|
||||||
|
or fragments, within the framework of the HTML specification, especially with
|
||||||
|
regard to untrusted inputs.
|
||||||
|
|
||||||
|
This package provides both a tokenizer and a parser. Only the parser constructs
|
||||||
|
a DOM according to the HTML specification, resolving malformed and misplaced
|
||||||
|
tags where appropriate. The tokenizer simply tokenizes the HTML presented to it,
|
||||||
|
and as such does not resolve issues that may exist in the processed HTML,
|
||||||
|
producing a literal interpretation of the input.
|
||||||
|
|
||||||
|
If your use case requires semantically well-formed HTML, as defined by the
|
||||||
|
WHATWG specifiction, the parser should be used rather than the tokenizer.
|
||||||
*/
|
*/
|
||||||
package html // import "golang.org/x/net/html"
|
package html // import "golang.org/x/net/html"
|
||||||
|
|
||||||
|
81
vendor/golang.org/x/net/html/escape.go
generated
vendored
81
vendor/golang.org/x/net/html/escape.go
generated
vendored
@ -193,6 +193,87 @@ func lower(b []byte) []byte {
|
|||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// escapeComment is like func escape but escapes its input bytes less often.
|
||||||
|
// Per https://github.com/golang/go/issues/58246 some HTML comments are (1)
|
||||||
|
// meaningful and (2) contain angle brackets that we'd like to avoid escaping
|
||||||
|
// unless we have to.
|
||||||
|
//
|
||||||
|
// "We have to" includes the '&' byte, since that introduces other escapes.
|
||||||
|
//
|
||||||
|
// It also includes those bytes (not including EOF) that would otherwise end
|
||||||
|
// the comment. Per the summary table at the bottom of comment_test.go, this is
|
||||||
|
// the '>' byte that, per above, we'd like to avoid escaping unless we have to.
|
||||||
|
//
|
||||||
|
// Studying the summary table (and T actions in its '>' column) closely, we
|
||||||
|
// only need to escape in states 43, 44, 49, 51 and 52. State 43 is at the
|
||||||
|
// start of the comment data. State 52 is after a '!'. The other three states
|
||||||
|
// are after a '-'.
|
||||||
|
//
|
||||||
|
// Our algorithm is thus to escape every '&' and to escape '>' if and only if:
|
||||||
|
// - The '>' is after a '!' or '-' (in the unescaped data) or
|
||||||
|
// - The '>' is at the start of the comment data (after the opening "<!--").
|
||||||
|
func escapeComment(w writer, s string) error {
|
||||||
|
// When modifying this function, consider manually increasing the
|
||||||
|
// maxSuffixLen constant in func TestComments, from 6 to e.g. 9 or more.
|
||||||
|
// That increase should only be temporary, not committed, as it
|
||||||
|
// exponentially affects the test running time.
|
||||||
|
|
||||||
|
if len(s) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Loop:
|
||||||
|
// - Grow j such that s[i:j] does not need escaping.
|
||||||
|
// - If s[j] does need escaping, output s[i:j] and an escaped s[j],
|
||||||
|
// resetting i and j to point past that s[j] byte.
|
||||||
|
i := 0
|
||||||
|
for j := 0; j < len(s); j++ {
|
||||||
|
escaped := ""
|
||||||
|
switch s[j] {
|
||||||
|
case '&':
|
||||||
|
escaped = "&"
|
||||||
|
|
||||||
|
case '>':
|
||||||
|
if j > 0 {
|
||||||
|
if prev := s[j-1]; (prev != '!') && (prev != '-') {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
escaped = ">"
|
||||||
|
|
||||||
|
default:
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if i < j {
|
||||||
|
if _, err := w.WriteString(s[i:j]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if _, err := w.WriteString(escaped); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
i = j + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if i < len(s) {
|
||||||
|
if _, err := w.WriteString(s[i:]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// escapeCommentString is to EscapeString as escapeComment is to escape.
|
||||||
|
func escapeCommentString(s string) string {
|
||||||
|
if strings.IndexAny(s, "&>") == -1 {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
var buf bytes.Buffer
|
||||||
|
escapeComment(&buf, s)
|
||||||
|
return buf.String()
|
||||||
|
}
|
||||||
|
|
||||||
const escapedChars = "&'<>\"\r"
|
const escapedChars = "&'<>\"\r"
|
||||||
|
|
||||||
func escape(w writer, s string) error {
|
func escape(w writer, s string) error {
|
||||||
|
28
vendor/golang.org/x/net/html/parse.go
generated
vendored
28
vendor/golang.org/x/net/html/parse.go
generated
vendored
@ -184,7 +184,7 @@ func (p *parser) clearStackToContext(s scope) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseGenericRawTextElements implements the generic raw text element parsing
|
// parseGenericRawTextElement implements the generic raw text element parsing
|
||||||
// algorithm defined in 12.2.6.2.
|
// algorithm defined in 12.2.6.2.
|
||||||
// https://html.spec.whatwg.org/multipage/parsing.html#parsing-elements-that-contain-only-text
|
// https://html.spec.whatwg.org/multipage/parsing.html#parsing-elements-that-contain-only-text
|
||||||
// TODO: Since both RAWTEXT and RCDATA states are treated as tokenizer's part
|
// TODO: Since both RAWTEXT and RCDATA states are treated as tokenizer's part
|
||||||
@ -663,6 +663,24 @@ func inHeadIM(p *parser) bool {
|
|||||||
// Ignore the token.
|
// Ignore the token.
|
||||||
return true
|
return true
|
||||||
case a.Template:
|
case a.Template:
|
||||||
|
// TODO: remove this divergence from the HTML5 spec.
|
||||||
|
//
|
||||||
|
// We don't handle all of the corner cases when mixing foreign
|
||||||
|
// content (i.e. <math> or <svg>) with <template>. Without this
|
||||||
|
// early return, we can get into an infinite loop, possibly because
|
||||||
|
// of the "TODO... further divergence" a little below.
|
||||||
|
//
|
||||||
|
// As a workaround, if we are mixing foreign content and templates,
|
||||||
|
// just ignore the rest of the HTML. Foreign content is rare and a
|
||||||
|
// relatively old HTML feature. Templates are also rare and a
|
||||||
|
// relatively new HTML feature. Their combination is very rare.
|
||||||
|
for _, e := range p.oe {
|
||||||
|
if e.Namespace != "" {
|
||||||
|
p.im = ignoreTheRemainingTokens
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
p.addElement()
|
p.addElement()
|
||||||
p.afe = append(p.afe, &scopeMarker)
|
p.afe = append(p.afe, &scopeMarker)
|
||||||
p.framesetOK = false
|
p.framesetOK = false
|
||||||
@ -683,7 +701,7 @@ func inHeadIM(p *parser) bool {
|
|||||||
if !p.oe.contains(a.Template) {
|
if !p.oe.contains(a.Template) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// TODO: remove this divergence from the HTML5 spec.
|
// TODO: remove this further divergence from the HTML5 spec.
|
||||||
//
|
//
|
||||||
// See https://bugs.chromium.org/p/chromium/issues/detail?id=829668
|
// See https://bugs.chromium.org/p/chromium/issues/detail?id=829668
|
||||||
p.generateImpliedEndTags()
|
p.generateImpliedEndTags()
|
||||||
@ -716,7 +734,7 @@ func inHeadIM(p *parser) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 12.2.6.4.5.
|
// Section 12.2.6.4.5.
|
||||||
func inHeadNoscriptIM(p *parser) bool {
|
func inHeadNoscriptIM(p *parser) bool {
|
||||||
switch p.tok.Type {
|
switch p.tok.Type {
|
||||||
case DoctypeToken:
|
case DoctypeToken:
|
||||||
@ -2127,6 +2145,10 @@ func afterAfterFramesetIM(p *parser) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ignoreTheRemainingTokens(p *parser) bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
const whitespaceOrNUL = whitespace + "\x00"
|
const whitespaceOrNUL = whitespace + "\x00"
|
||||||
|
|
||||||
// Section 12.2.6.5
|
// Section 12.2.6.5
|
||||||
|
4
vendor/golang.org/x/net/html/render.go
generated
vendored
4
vendor/golang.org/x/net/html/render.go
generated
vendored
@ -85,7 +85,7 @@ func render1(w writer, n *Node) error {
|
|||||||
if _, err := w.WriteString("<!--"); err != nil {
|
if _, err := w.WriteString("<!--"); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if _, err := w.WriteString(n.Data); err != nil {
|
if err := escapeComment(w, n.Data); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if _, err := w.WriteString("-->"); err != nil {
|
if _, err := w.WriteString("-->"); err != nil {
|
||||||
@ -96,7 +96,7 @@ func render1(w writer, n *Node) error {
|
|||||||
if _, err := w.WriteString("<!DOCTYPE "); err != nil {
|
if _, err := w.WriteString("<!DOCTYPE "); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if _, err := w.WriteString(n.Data); err != nil {
|
if err := escape(w, n.Data); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if n.Attr != nil {
|
if n.Attr != nil {
|
||||||
|
61
vendor/golang.org/x/net/html/token.go
generated
vendored
61
vendor/golang.org/x/net/html/token.go
generated
vendored
@ -110,9 +110,9 @@ func (t Token) String() string {
|
|||||||
case SelfClosingTagToken:
|
case SelfClosingTagToken:
|
||||||
return "<" + t.tagString() + "/>"
|
return "<" + t.tagString() + "/>"
|
||||||
case CommentToken:
|
case CommentToken:
|
||||||
return "<!--" + t.Data + "-->"
|
return "<!--" + escapeCommentString(t.Data) + "-->"
|
||||||
case DoctypeToken:
|
case DoctypeToken:
|
||||||
return "<!DOCTYPE " + t.Data + ">"
|
return "<!DOCTYPE " + EscapeString(t.Data) + ">"
|
||||||
}
|
}
|
||||||
return "Invalid(" + strconv.Itoa(int(t.Type)) + ")"
|
return "Invalid(" + strconv.Itoa(int(t.Type)) + ")"
|
||||||
}
|
}
|
||||||
@ -598,6 +598,11 @@ scriptDataDoubleEscapeEnd:
|
|||||||
// readComment reads the next comment token starting with "<!--". The opening
|
// readComment reads the next comment token starting with "<!--". The opening
|
||||||
// "<!--" has already been consumed.
|
// "<!--" has already been consumed.
|
||||||
func (z *Tokenizer) readComment() {
|
func (z *Tokenizer) readComment() {
|
||||||
|
// When modifying this function, consider manually increasing the
|
||||||
|
// maxSuffixLen constant in func TestComments, from 6 to e.g. 9 or more.
|
||||||
|
// That increase should only be temporary, not committed, as it
|
||||||
|
// exponentially affects the test running time.
|
||||||
|
|
||||||
z.data.start = z.raw.end
|
z.data.start = z.raw.end
|
||||||
defer func() {
|
defer func() {
|
||||||
if z.data.end < z.data.start {
|
if z.data.end < z.data.start {
|
||||||
@ -605,14 +610,13 @@ func (z *Tokenizer) readComment() {
|
|||||||
z.data.end = z.data.start
|
z.data.end = z.data.start
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
for dashCount := 2; ; {
|
|
||||||
|
var dashCount int
|
||||||
|
beginning := true
|
||||||
|
for {
|
||||||
c := z.readByte()
|
c := z.readByte()
|
||||||
if z.err != nil {
|
if z.err != nil {
|
||||||
// Ignore up to two dashes at EOF.
|
z.data.end = z.calculateAbruptCommentDataEnd()
|
||||||
if dashCount > 2 {
|
|
||||||
dashCount = 2
|
|
||||||
}
|
|
||||||
z.data.end = z.raw.end - dashCount
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch c {
|
switch c {
|
||||||
@ -620,7 +624,7 @@ func (z *Tokenizer) readComment() {
|
|||||||
dashCount++
|
dashCount++
|
||||||
continue
|
continue
|
||||||
case '>':
|
case '>':
|
||||||
if dashCount >= 2 {
|
if dashCount >= 2 || beginning {
|
||||||
z.data.end = z.raw.end - len("-->")
|
z.data.end = z.raw.end - len("-->")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -628,19 +632,52 @@ func (z *Tokenizer) readComment() {
|
|||||||
if dashCount >= 2 {
|
if dashCount >= 2 {
|
||||||
c = z.readByte()
|
c = z.readByte()
|
||||||
if z.err != nil {
|
if z.err != nil {
|
||||||
z.data.end = z.raw.end
|
z.data.end = z.calculateAbruptCommentDataEnd()
|
||||||
return
|
return
|
||||||
}
|
} else if c == '>' {
|
||||||
if c == '>' {
|
|
||||||
z.data.end = z.raw.end - len("--!>")
|
z.data.end = z.raw.end - len("--!>")
|
||||||
return
|
return
|
||||||
|
} else if c == '-' {
|
||||||
|
dashCount = 1
|
||||||
|
beginning = false
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dashCount = 0
|
dashCount = 0
|
||||||
|
beginning = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (z *Tokenizer) calculateAbruptCommentDataEnd() int {
|
||||||
|
raw := z.Raw()
|
||||||
|
const prefixLen = len("<!--")
|
||||||
|
if len(raw) >= prefixLen {
|
||||||
|
raw = raw[prefixLen:]
|
||||||
|
if hasSuffix(raw, "--!") {
|
||||||
|
return z.raw.end - 3
|
||||||
|
} else if hasSuffix(raw, "--") {
|
||||||
|
return z.raw.end - 2
|
||||||
|
} else if hasSuffix(raw, "-") {
|
||||||
|
return z.raw.end - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return z.raw.end
|
||||||
|
}
|
||||||
|
|
||||||
|
func hasSuffix(b []byte, suffix string) bool {
|
||||||
|
if len(b) < len(suffix) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
b = b[len(b)-len(suffix):]
|
||||||
|
for i := range b {
|
||||||
|
if b[i] != suffix[i] {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// readUntilCloseAngle reads until the next ">".
|
// readUntilCloseAngle reads until the next ">".
|
||||||
func (z *Tokenizer) readUntilCloseAngle() {
|
func (z *Tokenizer) readUntilCloseAngle() {
|
||||||
z.data.start = z.raw.end
|
z.data.start = z.raw.end
|
||||||
|
3
vendor/golang.org/x/sys/AUTHORS
generated
vendored
3
vendor/golang.org/x/sys/AUTHORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code refers to The Go Authors for copyright purposes.
|
|
||||||
# The master list of authors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/AUTHORS.
|
|
3
vendor/golang.org/x/sys/CONTRIBUTORS
generated
vendored
3
vendor/golang.org/x/sys/CONTRIBUTORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code was written by the Go contributors.
|
|
||||||
# The master list of contributors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/CONTRIBUTORS.
|
|
4
vendor/golang.org/x/sys/windows/aliases.go
generated
vendored
4
vendor/golang.org/x/sys/windows/aliases.go
generated
vendored
@ -2,8 +2,8 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build windows
|
//go:build windows && go1.9
|
||||||
// +build go1.9
|
// +build windows,go1.9
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
|
||||||
|
1
vendor/golang.org/x/sys/windows/empty.s
generated
vendored
1
vendor/golang.org/x/sys/windows/empty.s
generated
vendored
@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !go1.12
|
||||||
// +build !go1.12
|
// +build !go1.12
|
||||||
|
|
||||||
// This file is here to allow bodyless functions with go:linkname for Go 1.11
|
// This file is here to allow bodyless functions with go:linkname for Go 1.11
|
||||||
|
1
vendor/golang.org/x/sys/windows/eventlog.go
generated
vendored
1
vendor/golang.org/x/sys/windows/eventlog.go
generated
vendored
@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
// +build windows
|
// +build windows
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
74
vendor/golang.org/x/sys/windows/exec_windows.go
generated
vendored
74
vendor/golang.org/x/sys/windows/exec_windows.go
generated
vendored
@ -15,11 +15,11 @@ import (
|
|||||||
// in http://msdn.microsoft.com/en-us/library/ms880421.
|
// in http://msdn.microsoft.com/en-us/library/ms880421.
|
||||||
// This function returns "" (2 double quotes) if s is empty.
|
// This function returns "" (2 double quotes) if s is empty.
|
||||||
// Alternatively, these transformations are done:
|
// Alternatively, these transformations are done:
|
||||||
// - every back slash (\) is doubled, but only if immediately
|
// - every back slash (\) is doubled, but only if immediately
|
||||||
// followed by double quote (");
|
// followed by double quote (");
|
||||||
// - every double quote (") is escaped by back slash (\);
|
// - every double quote (") is escaped by back slash (\);
|
||||||
// - finally, s is wrapped with double quotes (arg -> "arg"),
|
// - finally, s is wrapped with double quotes (arg -> "arg"),
|
||||||
// but only if there is space or tab inside s.
|
// but only if there is space or tab inside s.
|
||||||
func EscapeArg(s string) string {
|
func EscapeArg(s string) string {
|
||||||
if len(s) == 0 {
|
if len(s) == 0 {
|
||||||
return "\"\""
|
return "\"\""
|
||||||
@ -78,6 +78,40 @@ func EscapeArg(s string) string {
|
|||||||
return string(qs[:j])
|
return string(qs[:j])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ComposeCommandLine escapes and joins the given arguments suitable for use as a Windows command line,
|
||||||
|
// in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument,
|
||||||
|
// or any program that uses CommandLineToArgv.
|
||||||
|
func ComposeCommandLine(args []string) string {
|
||||||
|
var commandLine string
|
||||||
|
for i := range args {
|
||||||
|
if i > 0 {
|
||||||
|
commandLine += " "
|
||||||
|
}
|
||||||
|
commandLine += EscapeArg(args[i])
|
||||||
|
}
|
||||||
|
return commandLine
|
||||||
|
}
|
||||||
|
|
||||||
|
// DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv,
|
||||||
|
// as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that
|
||||||
|
// command lines are passed around.
|
||||||
|
func DecomposeCommandLine(commandLine string) ([]string, error) {
|
||||||
|
if len(commandLine) == 0 {
|
||||||
|
return []string{}, nil
|
||||||
|
}
|
||||||
|
var argc int32
|
||||||
|
argv, err := CommandLineToArgv(StringToUTF16Ptr(commandLine), &argc)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer LocalFree(Handle(unsafe.Pointer(argv)))
|
||||||
|
var args []string
|
||||||
|
for _, v := range (*argv)[:argc] {
|
||||||
|
args = append(args, UTF16ToString((*v)[:]))
|
||||||
|
}
|
||||||
|
return args, nil
|
||||||
|
}
|
||||||
|
|
||||||
func CloseOnExec(fd Handle) {
|
func CloseOnExec(fd Handle) {
|
||||||
SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)
|
SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)
|
||||||
}
|
}
|
||||||
@ -101,8 +135,8 @@ func FullPath(name string) (path string, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewProcThreadAttributeList allocates a new ProcThreadAttributeList, with the requested maximum number of attributes.
|
// NewProcThreadAttributeList allocates a new ProcThreadAttributeListContainer, with the requested maximum number of attributes.
|
||||||
func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeList, error) {
|
func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListContainer, error) {
|
||||||
var size uintptr
|
var size uintptr
|
||||||
err := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size)
|
err := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size)
|
||||||
if err != ERROR_INSUFFICIENT_BUFFER {
|
if err != ERROR_INSUFFICIENT_BUFFER {
|
||||||
@ -111,10 +145,13 @@ func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeList,
|
|||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
const psize = unsafe.Sizeof(uintptr(0))
|
alloc, err := LocalAlloc(LMEM_FIXED, uint32(size))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.
|
// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.
|
||||||
al := (*ProcThreadAttributeList)(unsafe.Pointer(&make([]unsafe.Pointer, (size+psize-1)/psize)[0]))
|
al := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(alloc))}
|
||||||
err = initializeProcThreadAttributeList(al, maxAttrCount, 0, &size)
|
err = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -122,11 +159,20 @@ func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeList,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.
|
// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.
|
||||||
func (al *ProcThreadAttributeList) Update(attribute uintptr, flags uint32, value unsafe.Pointer, size uintptr, prevValue unsafe.Pointer, returnedSize *uintptr) error {
|
func (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error {
|
||||||
return updateProcThreadAttribute(al, flags, attribute, value, size, prevValue, returnedSize)
|
al.pointers = append(al.pointers, value)
|
||||||
|
return updateProcThreadAttribute(al.data, 0, attribute, value, size, nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete frees ProcThreadAttributeList's resources.
|
// Delete frees ProcThreadAttributeList's resources.
|
||||||
func (al *ProcThreadAttributeList) Delete() {
|
func (al *ProcThreadAttributeListContainer) Delete() {
|
||||||
deleteProcThreadAttributeList(al)
|
deleteProcThreadAttributeList(al.data)
|
||||||
|
LocalFree(Handle(unsafe.Pointer(al.data)))
|
||||||
|
al.data = nil
|
||||||
|
al.pointers = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx.
|
||||||
|
func (al *ProcThreadAttributeListContainer) List() *ProcThreadAttributeList {
|
||||||
|
return al.data
|
||||||
}
|
}
|
||||||
|
11
vendor/golang.org/x/sys/windows/memory_windows.go
generated
vendored
11
vendor/golang.org/x/sys/windows/memory_windows.go
generated
vendored
@ -35,3 +35,14 @@ const (
|
|||||||
QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008
|
QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008
|
||||||
QUOTA_LIMITS_HARDWS_MAX_ENABLE = 0x00000004
|
QUOTA_LIMITS_HARDWS_MAX_ENABLE = 0x00000004
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type MemoryBasicInformation struct {
|
||||||
|
BaseAddress uintptr
|
||||||
|
AllocationBase uintptr
|
||||||
|
AllocationProtect uint32
|
||||||
|
PartitionId uint16
|
||||||
|
RegionSize uintptr
|
||||||
|
State uint32
|
||||||
|
Protect uint32
|
||||||
|
Type uint32
|
||||||
|
}
|
||||||
|
3
vendor/golang.org/x/sys/windows/mksyscall.go
generated
vendored
3
vendor/golang.org/x/sys/windows/mksyscall.go
generated
vendored
@ -2,8 +2,9 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build generate
|
||||||
// +build generate
|
// +build generate
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
|
||||||
//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go
|
//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go
|
||||||
|
1
vendor/golang.org/x/sys/windows/race.go
generated
vendored
1
vendor/golang.org/x/sys/windows/race.go
generated
vendored
@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows && race
|
||||||
// +build windows,race
|
// +build windows,race
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
1
vendor/golang.org/x/sys/windows/race0.go
generated
vendored
1
vendor/golang.org/x/sys/windows/race0.go
generated
vendored
@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows && !race
|
||||||
// +build windows,!race
|
// +build windows,!race
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
1
vendor/golang.org/x/sys/windows/security_windows.go
generated
vendored
1
vendor/golang.org/x/sys/windows/security_windows.go
generated
vendored
@ -889,6 +889,7 @@ type WTS_SESSION_INFO struct {
|
|||||||
//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken
|
//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken
|
||||||
//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW
|
//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW
|
||||||
//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory
|
//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory
|
||||||
|
//sys WTSGetActiveConsoleSessionId() (sessionID uint32)
|
||||||
|
|
||||||
type ACL struct {
|
type ACL struct {
|
||||||
aclRevision byte
|
aclRevision byte
|
||||||
|
14
vendor/golang.org/x/sys/windows/service.go
generated
vendored
14
vendor/golang.org/x/sys/windows/service.go
generated
vendored
@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
// +build windows
|
// +build windows
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
@ -16,8 +17,6 @@ const (
|
|||||||
SC_MANAGER_ALL_ACCESS = 0xf003f
|
SC_MANAGER_ALL_ACCESS = 0xf003f
|
||||||
)
|
)
|
||||||
|
|
||||||
//sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SERVICE_KERNEL_DRIVER = 1
|
SERVICE_KERNEL_DRIVER = 1
|
||||||
SERVICE_FILE_SYSTEM_DRIVER = 2
|
SERVICE_FILE_SYSTEM_DRIVER = 2
|
||||||
@ -132,6 +131,14 @@ const (
|
|||||||
SC_EVENT_DATABASE_CHANGE = 0
|
SC_EVENT_DATABASE_CHANGE = 0
|
||||||
SC_EVENT_PROPERTY_CHANGE = 1
|
SC_EVENT_PROPERTY_CHANGE = 1
|
||||||
SC_EVENT_STATUS_CHANGE = 2
|
SC_EVENT_STATUS_CHANGE = 2
|
||||||
|
|
||||||
|
SERVICE_START_REASON_DEMAND = 0x00000001
|
||||||
|
SERVICE_START_REASON_AUTO = 0x00000002
|
||||||
|
SERVICE_START_REASON_TRIGGER = 0x00000004
|
||||||
|
SERVICE_START_REASON_RESTART_ON_FAILURE = 0x00000008
|
||||||
|
SERVICE_START_REASON_DELAYEDAUTO = 0x00000010
|
||||||
|
|
||||||
|
SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
type SERVICE_STATUS struct {
|
type SERVICE_STATUS struct {
|
||||||
@ -216,6 +223,7 @@ type QUERY_SERVICE_LOCK_STATUS struct {
|
|||||||
LockDuration uint32
|
LockDuration uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW
|
||||||
//sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle
|
//sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle
|
||||||
//sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW
|
//sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW
|
||||||
//sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW
|
//sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW
|
||||||
@ -235,3 +243,5 @@ type QUERY_SERVICE_LOCK_STATUS struct {
|
|||||||
//sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW
|
//sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW
|
||||||
//sys SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications?
|
//sys SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications?
|
||||||
//sys UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications?
|
//sys UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications?
|
||||||
|
//sys RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW
|
||||||
|
//sys QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation?
|
||||||
|
1425
vendor/golang.org/x/sys/windows/setupapi_windows.go
generated
vendored
Normal file
1425
vendor/golang.org/x/sys/windows/setupapi_windows.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
100
vendor/golang.org/x/sys/windows/setupapierrors_windows.go
generated
vendored
100
vendor/golang.org/x/sys/windows/setupapierrors_windows.go
generated
vendored
@ -1,100 +0,0 @@
|
|||||||
// Copyright 2020 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.
|
|
||||||
|
|
||||||
package windows
|
|
||||||
|
|
||||||
import "syscall"
|
|
||||||
|
|
||||||
const (
|
|
||||||
ERROR_EXPECTED_SECTION_NAME syscall.Errno = 0x20000000 | 0xC0000000 | 0
|
|
||||||
ERROR_BAD_SECTION_NAME_LINE syscall.Errno = 0x20000000 | 0xC0000000 | 1
|
|
||||||
ERROR_SECTION_NAME_TOO_LONG syscall.Errno = 0x20000000 | 0xC0000000 | 2
|
|
||||||
ERROR_GENERAL_SYNTAX syscall.Errno = 0x20000000 | 0xC0000000 | 3
|
|
||||||
ERROR_WRONG_INF_STYLE syscall.Errno = 0x20000000 | 0xC0000000 | 0x100
|
|
||||||
ERROR_SECTION_NOT_FOUND syscall.Errno = 0x20000000 | 0xC0000000 | 0x101
|
|
||||||
ERROR_LINE_NOT_FOUND syscall.Errno = 0x20000000 | 0xC0000000 | 0x102
|
|
||||||
ERROR_NO_BACKUP syscall.Errno = 0x20000000 | 0xC0000000 | 0x103
|
|
||||||
ERROR_NO_ASSOCIATED_CLASS syscall.Errno = 0x20000000 | 0xC0000000 | 0x200
|
|
||||||
ERROR_CLASS_MISMATCH syscall.Errno = 0x20000000 | 0xC0000000 | 0x201
|
|
||||||
ERROR_DUPLICATE_FOUND syscall.Errno = 0x20000000 | 0xC0000000 | 0x202
|
|
||||||
ERROR_NO_DRIVER_SELECTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x203
|
|
||||||
ERROR_KEY_DOES_NOT_EXIST syscall.Errno = 0x20000000 | 0xC0000000 | 0x204
|
|
||||||
ERROR_INVALID_DEVINST_NAME syscall.Errno = 0x20000000 | 0xC0000000 | 0x205
|
|
||||||
ERROR_INVALID_CLASS syscall.Errno = 0x20000000 | 0xC0000000 | 0x206
|
|
||||||
ERROR_DEVINST_ALREADY_EXISTS syscall.Errno = 0x20000000 | 0xC0000000 | 0x207
|
|
||||||
ERROR_DEVINFO_NOT_REGISTERED syscall.Errno = 0x20000000 | 0xC0000000 | 0x208
|
|
||||||
ERROR_INVALID_REG_PROPERTY syscall.Errno = 0x20000000 | 0xC0000000 | 0x209
|
|
||||||
ERROR_NO_INF syscall.Errno = 0x20000000 | 0xC0000000 | 0x20A
|
|
||||||
ERROR_NO_SUCH_DEVINST syscall.Errno = 0x20000000 | 0xC0000000 | 0x20B
|
|
||||||
ERROR_CANT_LOAD_CLASS_ICON syscall.Errno = 0x20000000 | 0xC0000000 | 0x20C
|
|
||||||
ERROR_INVALID_CLASS_INSTALLER syscall.Errno = 0x20000000 | 0xC0000000 | 0x20D
|
|
||||||
ERROR_DI_DO_DEFAULT syscall.Errno = 0x20000000 | 0xC0000000 | 0x20E
|
|
||||||
ERROR_DI_NOFILECOPY syscall.Errno = 0x20000000 | 0xC0000000 | 0x20F
|
|
||||||
ERROR_INVALID_HWPROFILE syscall.Errno = 0x20000000 | 0xC0000000 | 0x210
|
|
||||||
ERROR_NO_DEVICE_SELECTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x211
|
|
||||||
ERROR_DEVINFO_LIST_LOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x212
|
|
||||||
ERROR_DEVINFO_DATA_LOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x213
|
|
||||||
ERROR_DI_BAD_PATH syscall.Errno = 0x20000000 | 0xC0000000 | 0x214
|
|
||||||
ERROR_NO_CLASSINSTALL_PARAMS syscall.Errno = 0x20000000 | 0xC0000000 | 0x215
|
|
||||||
ERROR_FILEQUEUE_LOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x216
|
|
||||||
ERROR_BAD_SERVICE_INSTALLSECT syscall.Errno = 0x20000000 | 0xC0000000 | 0x217
|
|
||||||
ERROR_NO_CLASS_DRIVER_LIST syscall.Errno = 0x20000000 | 0xC0000000 | 0x218
|
|
||||||
ERROR_NO_ASSOCIATED_SERVICE syscall.Errno = 0x20000000 | 0xC0000000 | 0x219
|
|
||||||
ERROR_NO_DEFAULT_DEVICE_INTERFACE syscall.Errno = 0x20000000 | 0xC0000000 | 0x21A
|
|
||||||
ERROR_DEVICE_INTERFACE_ACTIVE syscall.Errno = 0x20000000 | 0xC0000000 | 0x21B
|
|
||||||
ERROR_DEVICE_INTERFACE_REMOVED syscall.Errno = 0x20000000 | 0xC0000000 | 0x21C
|
|
||||||
ERROR_BAD_INTERFACE_INSTALLSECT syscall.Errno = 0x20000000 | 0xC0000000 | 0x21D
|
|
||||||
ERROR_NO_SUCH_INTERFACE_CLASS syscall.Errno = 0x20000000 | 0xC0000000 | 0x21E
|
|
||||||
ERROR_INVALID_REFERENCE_STRING syscall.Errno = 0x20000000 | 0xC0000000 | 0x21F
|
|
||||||
ERROR_INVALID_MACHINENAME syscall.Errno = 0x20000000 | 0xC0000000 | 0x220
|
|
||||||
ERROR_REMOTE_COMM_FAILURE syscall.Errno = 0x20000000 | 0xC0000000 | 0x221
|
|
||||||
ERROR_MACHINE_UNAVAILABLE syscall.Errno = 0x20000000 | 0xC0000000 | 0x222
|
|
||||||
ERROR_NO_CONFIGMGR_SERVICES syscall.Errno = 0x20000000 | 0xC0000000 | 0x223
|
|
||||||
ERROR_INVALID_PROPPAGE_PROVIDER syscall.Errno = 0x20000000 | 0xC0000000 | 0x224
|
|
||||||
ERROR_NO_SUCH_DEVICE_INTERFACE syscall.Errno = 0x20000000 | 0xC0000000 | 0x225
|
|
||||||
ERROR_DI_POSTPROCESSING_REQUIRED syscall.Errno = 0x20000000 | 0xC0000000 | 0x226
|
|
||||||
ERROR_INVALID_COINSTALLER syscall.Errno = 0x20000000 | 0xC0000000 | 0x227
|
|
||||||
ERROR_NO_COMPAT_DRIVERS syscall.Errno = 0x20000000 | 0xC0000000 | 0x228
|
|
||||||
ERROR_NO_DEVICE_ICON syscall.Errno = 0x20000000 | 0xC0000000 | 0x229
|
|
||||||
ERROR_INVALID_INF_LOGCONFIG syscall.Errno = 0x20000000 | 0xC0000000 | 0x22A
|
|
||||||
ERROR_DI_DONT_INSTALL syscall.Errno = 0x20000000 | 0xC0000000 | 0x22B
|
|
||||||
ERROR_INVALID_FILTER_DRIVER syscall.Errno = 0x20000000 | 0xC0000000 | 0x22C
|
|
||||||
ERROR_NON_WINDOWS_NT_DRIVER syscall.Errno = 0x20000000 | 0xC0000000 | 0x22D
|
|
||||||
ERROR_NON_WINDOWS_DRIVER syscall.Errno = 0x20000000 | 0xC0000000 | 0x22E
|
|
||||||
ERROR_NO_CATALOG_FOR_OEM_INF syscall.Errno = 0x20000000 | 0xC0000000 | 0x22F
|
|
||||||
ERROR_DEVINSTALL_QUEUE_NONNATIVE syscall.Errno = 0x20000000 | 0xC0000000 | 0x230
|
|
||||||
ERROR_NOT_DISABLEABLE syscall.Errno = 0x20000000 | 0xC0000000 | 0x231
|
|
||||||
ERROR_CANT_REMOVE_DEVINST syscall.Errno = 0x20000000 | 0xC0000000 | 0x232
|
|
||||||
ERROR_INVALID_TARGET syscall.Errno = 0x20000000 | 0xC0000000 | 0x233
|
|
||||||
ERROR_DRIVER_NONNATIVE syscall.Errno = 0x20000000 | 0xC0000000 | 0x234
|
|
||||||
ERROR_IN_WOW64 syscall.Errno = 0x20000000 | 0xC0000000 | 0x235
|
|
||||||
ERROR_SET_SYSTEM_RESTORE_POINT syscall.Errno = 0x20000000 | 0xC0000000 | 0x236
|
|
||||||
ERROR_SCE_DISABLED syscall.Errno = 0x20000000 | 0xC0000000 | 0x238
|
|
||||||
ERROR_UNKNOWN_EXCEPTION syscall.Errno = 0x20000000 | 0xC0000000 | 0x239
|
|
||||||
ERROR_PNP_REGISTRY_ERROR syscall.Errno = 0x20000000 | 0xC0000000 | 0x23A
|
|
||||||
ERROR_REMOTE_REQUEST_UNSUPPORTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x23B
|
|
||||||
ERROR_NOT_AN_INSTALLED_OEM_INF syscall.Errno = 0x20000000 | 0xC0000000 | 0x23C
|
|
||||||
ERROR_INF_IN_USE_BY_DEVICES syscall.Errno = 0x20000000 | 0xC0000000 | 0x23D
|
|
||||||
ERROR_DI_FUNCTION_OBSOLETE syscall.Errno = 0x20000000 | 0xC0000000 | 0x23E
|
|
||||||
ERROR_NO_AUTHENTICODE_CATALOG syscall.Errno = 0x20000000 | 0xC0000000 | 0x23F
|
|
||||||
ERROR_AUTHENTICODE_DISALLOWED syscall.Errno = 0x20000000 | 0xC0000000 | 0x240
|
|
||||||
ERROR_AUTHENTICODE_TRUSTED_PUBLISHER syscall.Errno = 0x20000000 | 0xC0000000 | 0x241
|
|
||||||
ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED syscall.Errno = 0x20000000 | 0xC0000000 | 0x242
|
|
||||||
ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x243
|
|
||||||
ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH syscall.Errno = 0x20000000 | 0xC0000000 | 0x244
|
|
||||||
ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE syscall.Errno = 0x20000000 | 0xC0000000 | 0x245
|
|
||||||
ERROR_DEVICE_INSTALLER_NOT_READY syscall.Errno = 0x20000000 | 0xC0000000 | 0x246
|
|
||||||
ERROR_DRIVER_STORE_ADD_FAILED syscall.Errno = 0x20000000 | 0xC0000000 | 0x247
|
|
||||||
ERROR_DEVICE_INSTALL_BLOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x248
|
|
||||||
ERROR_DRIVER_INSTALL_BLOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x249
|
|
||||||
ERROR_WRONG_INF_TYPE syscall.Errno = 0x20000000 | 0xC0000000 | 0x24A
|
|
||||||
ERROR_FILE_HASH_NOT_IN_CATALOG syscall.Errno = 0x20000000 | 0xC0000000 | 0x24B
|
|
||||||
ERROR_DRIVER_STORE_DELETE_FAILED syscall.Errno = 0x20000000 | 0xC0000000 | 0x24C
|
|
||||||
ERROR_UNRECOVERABLE_STACK_OVERFLOW syscall.Errno = 0x20000000 | 0xC0000000 | 0x300
|
|
||||||
EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW syscall.Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW
|
|
||||||
ERROR_NO_DEFAULT_INTERFACE_DEVICE syscall.Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE
|
|
||||||
ERROR_INTERFACE_DEVICE_ACTIVE syscall.Errno = ERROR_DEVICE_INTERFACE_ACTIVE
|
|
||||||
ERROR_INTERFACE_DEVICE_REMOVED syscall.Errno = ERROR_DEVICE_INTERFACE_REMOVED
|
|
||||||
ERROR_NO_SUCH_INTERFACE_DEVICE syscall.Errno = ERROR_NO_SUCH_DEVICE_INTERFACE
|
|
||||||
)
|
|
1
vendor/golang.org/x/sys/windows/str.go
generated
vendored
1
vendor/golang.org/x/sys/windows/str.go
generated
vendored
@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
// +build windows
|
// +build windows
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
11
vendor/golang.org/x/sys/windows/syscall.go
generated
vendored
11
vendor/golang.org/x/sys/windows/syscall.go
generated
vendored
@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
// +build windows
|
// +build windows
|
||||||
|
|
||||||
// Package windows contains an interface to the low-level operating system
|
// Package windows contains an interface to the low-level operating system
|
||||||
@ -29,8 +30,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sys/internal/unsafeheader"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ByteSliceFromString returns a NUL-terminated slice of bytes
|
// ByteSliceFromString returns a NUL-terminated slice of bytes
|
||||||
@ -82,13 +81,7 @@ func BytePtrToString(p *byte) string {
|
|||||||
ptr = unsafe.Pointer(uintptr(ptr) + 1)
|
ptr = unsafe.Pointer(uintptr(ptr) + 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
var s []byte
|
return string(unsafe.Slice(p, n))
|
||||||
h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
|
|
||||||
h.Data = unsafe.Pointer(p)
|
|
||||||
h.Len = n
|
|
||||||
h.Cap = n
|
|
||||||
|
|
||||||
return string(s)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Single-word zero for use when we need a valid pointer to 0 bytes.
|
// Single-word zero for use when we need a valid pointer to 0 bytes.
|
||||||
|
239
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
239
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
@ -86,24 +86,13 @@ func StringToUTF16(s string) []uint16 {
|
|||||||
// s, with a terminating NUL added. If s contains a NUL byte at any
|
// s, with a terminating NUL added. If s contains a NUL byte at any
|
||||||
// location, it returns (nil, syscall.EINVAL).
|
// location, it returns (nil, syscall.EINVAL).
|
||||||
func UTF16FromString(s string) ([]uint16, error) {
|
func UTF16FromString(s string) ([]uint16, error) {
|
||||||
for i := 0; i < len(s); i++ {
|
return syscall.UTF16FromString(s)
|
||||||
if s[i] == 0 {
|
|
||||||
return nil, syscall.EINVAL
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return utf16.Encode([]rune(s + "\x00")), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
|
// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
|
||||||
// with a terminating NUL and any bytes after the NUL removed.
|
// with a terminating NUL and any bytes after the NUL removed.
|
||||||
func UTF16ToString(s []uint16) string {
|
func UTF16ToString(s []uint16) string {
|
||||||
for i, v := range s {
|
return syscall.UTF16ToString(s)
|
||||||
if v == 0 {
|
|
||||||
s = s[:i]
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return string(utf16.Decode(s))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.
|
// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.
|
||||||
@ -139,13 +128,7 @@ func UTF16PtrToString(p *uint16) string {
|
|||||||
ptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p))
|
ptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p))
|
||||||
}
|
}
|
||||||
|
|
||||||
var s []uint16
|
return string(utf16.Decode(unsafe.Slice(p, n)))
|
||||||
h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
|
|
||||||
h.Data = unsafe.Pointer(p)
|
|
||||||
h.Len = n
|
|
||||||
h.Cap = n
|
|
||||||
|
|
||||||
return string(utf16.Decode(s))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Getpagesize() int { return 4096 }
|
func Getpagesize() int { return 4096 }
|
||||||
@ -186,8 +169,8 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)
|
//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)
|
||||||
//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
|
//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
|
||||||
//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState
|
//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState
|
||||||
//sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
|
//sys readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = ReadFile
|
||||||
//sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
|
//sys writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = WriteFile
|
||||||
//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)
|
//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)
|
||||||
//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
|
//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
|
||||||
//sys CloseHandle(handle Handle) (err error)
|
//sys CloseHandle(handle Handle) (err error)
|
||||||
@ -220,6 +203,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys CancelIo(s Handle) (err error)
|
//sys CancelIo(s Handle) (err error)
|
||||||
//sys CancelIoEx(s Handle, o *Overlapped) (err error)
|
//sys CancelIoEx(s Handle, o *Overlapped) (err error)
|
||||||
//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
|
//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
|
||||||
|
//sys CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = advapi32.CreateProcessAsUserW
|
||||||
//sys initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList
|
//sys initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList
|
||||||
//sys deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList
|
//sys deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList
|
||||||
//sys updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute
|
//sys updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute
|
||||||
@ -247,6 +231,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW
|
//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW
|
||||||
//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW
|
//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW
|
||||||
//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW
|
//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW
|
||||||
|
//sys ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW
|
||||||
//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock
|
//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock
|
||||||
//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock
|
//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock
|
||||||
//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64
|
//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64
|
||||||
@ -273,6 +258,11 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc
|
//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc
|
||||||
//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree
|
//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree
|
||||||
//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect
|
//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect
|
||||||
|
//sys VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx
|
||||||
|
//sys VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery
|
||||||
|
//sys VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx
|
||||||
|
//sys ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory
|
||||||
|
//sys WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory
|
||||||
//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
|
//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
|
||||||
//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
|
//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
|
||||||
//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW
|
//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW
|
||||||
@ -316,6 +306,8 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
|
//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
|
||||||
//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW
|
//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW
|
||||||
//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot
|
//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot
|
||||||
|
//sys Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW
|
||||||
|
//sys Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW
|
||||||
//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW
|
//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW
|
||||||
//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW
|
//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW
|
||||||
//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error)
|
//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error)
|
||||||
@ -354,6 +346,18 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error)
|
//sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error)
|
||||||
//sys GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)
|
//sys GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)
|
||||||
//sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)
|
//sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)
|
||||||
|
//sys GetActiveProcessorCount(groupNumber uint16) (ret uint32)
|
||||||
|
//sys GetMaximumProcessorCount(groupNumber uint16) (ret uint32)
|
||||||
|
//sys EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) = user32.EnumWindows
|
||||||
|
//sys EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) = user32.EnumChildWindows
|
||||||
|
//sys GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) = user32.GetClassNameW
|
||||||
|
//sys GetDesktopWindow() (hwnd HWND) = user32.GetDesktopWindow
|
||||||
|
//sys GetForegroundWindow() (hwnd HWND) = user32.GetForegroundWindow
|
||||||
|
//sys IsWindow(hwnd HWND) (isWindow bool) = user32.IsWindow
|
||||||
|
//sys IsWindowUnicode(hwnd HWND) (isUnicode bool) = user32.IsWindowUnicode
|
||||||
|
//sys IsWindowVisible(hwnd HWND) (isVisible bool) = user32.IsWindowVisible
|
||||||
|
//sys GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) = user32.GetGUIThreadInfo
|
||||||
|
//sys GetLargePageMinimum() (size uintptr)
|
||||||
|
|
||||||
// Volume Management Functions
|
// Volume Management Functions
|
||||||
//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW
|
//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW
|
||||||
@ -395,8 +399,19 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys LoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource
|
//sys LoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource
|
||||||
//sys LockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource
|
//sys LockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource
|
||||||
|
|
||||||
|
// Version APIs
|
||||||
|
//sys GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) = version.GetFileVersionInfoSizeW
|
||||||
|
//sys GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) = version.GetFileVersionInfoW
|
||||||
|
//sys VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW
|
||||||
|
|
||||||
// Process Status API (PSAPI)
|
// Process Status API (PSAPI)
|
||||||
//sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses
|
//sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses
|
||||||
|
//sys EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules
|
||||||
|
//sys EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx
|
||||||
|
//sys GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation
|
||||||
|
//sys GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW
|
||||||
|
//sys GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW
|
||||||
|
//sys QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx
|
||||||
|
|
||||||
// NT Native APIs
|
// NT Native APIs
|
||||||
//sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb
|
//sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb
|
||||||
@ -407,11 +422,20 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys RtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString
|
//sys RtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString
|
||||||
//sys NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile
|
//sys NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile
|
||||||
//sys NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile
|
//sys NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile
|
||||||
|
//sys NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) = ntdll.NtSetInformationFile
|
||||||
//sys RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus
|
//sys RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus
|
||||||
//sys RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus
|
//sys RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus
|
||||||
//sys RtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl
|
//sys RtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl
|
||||||
//sys NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess
|
//sys NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess
|
||||||
//sys NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess
|
//sys NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess
|
||||||
|
//sys NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQuerySystemInformation
|
||||||
|
//sys NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) = ntdll.NtSetSystemInformation
|
||||||
|
//sys RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable
|
||||||
|
//sys RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable
|
||||||
|
|
||||||
|
// Desktop Window Manager API (Dwmapi)
|
||||||
|
//sys DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute
|
||||||
|
//sys DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute
|
||||||
|
|
||||||
// syscall interface implementation for other packages
|
// syscall interface implementation for other packages
|
||||||
|
|
||||||
@ -523,12 +547,6 @@ func Read(fd Handle, p []byte) (n int, err error) {
|
|||||||
}
|
}
|
||||||
return 0, e
|
return 0, e
|
||||||
}
|
}
|
||||||
if raceenabled {
|
|
||||||
if done > 0 {
|
|
||||||
raceWriteRange(unsafe.Pointer(&p[0]), int(done))
|
|
||||||
}
|
|
||||||
raceAcquire(unsafe.Pointer(&ioSync))
|
|
||||||
}
|
|
||||||
return int(done), nil
|
return int(done), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,12 +559,31 @@ func Write(fd Handle, p []byte) (n int, err error) {
|
|||||||
if e != nil {
|
if e != nil {
|
||||||
return 0, e
|
return 0, e
|
||||||
}
|
}
|
||||||
if raceenabled && done > 0 {
|
|
||||||
raceReadRange(unsafe.Pointer(&p[0]), int(done))
|
|
||||||
}
|
|
||||||
return int(done), nil
|
return int(done), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {
|
||||||
|
err := readFile(fd, p, done, overlapped)
|
||||||
|
if raceenabled {
|
||||||
|
if *done > 0 {
|
||||||
|
raceWriteRange(unsafe.Pointer(&p[0]), int(*done))
|
||||||
|
}
|
||||||
|
raceAcquire(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {
|
||||||
|
if raceenabled {
|
||||||
|
raceReleaseMerge(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
err := writeFile(fd, p, done, overlapped)
|
||||||
|
if raceenabled && *done > 0 {
|
||||||
|
raceReadRange(unsafe.Pointer(&p[0]), int(*done))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
var ioSync int64
|
var ioSync int64
|
||||||
|
|
||||||
func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {
|
func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {
|
||||||
@ -585,7 +622,6 @@ var (
|
|||||||
|
|
||||||
func getStdHandle(stdhandle uint32) (fd Handle) {
|
func getStdHandle(stdhandle uint32) (fd Handle) {
|
||||||
r, _ := GetStdHandle(stdhandle)
|
r, _ := GetStdHandle(stdhandle)
|
||||||
CloseOnExec(r)
|
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -710,7 +746,7 @@ func Utimes(path string, tv []Timeval) (err error) {
|
|||||||
if e != nil {
|
if e != nil {
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
defer Close(h)
|
defer CloseHandle(h)
|
||||||
a := NsecToFiletime(tv[0].Nanoseconds())
|
a := NsecToFiletime(tv[0].Nanoseconds())
|
||||||
w := NsecToFiletime(tv[1].Nanoseconds())
|
w := NsecToFiletime(tv[1].Nanoseconds())
|
||||||
return SetFileTime(h, nil, &a, &w)
|
return SetFileTime(h, nil, &a, &w)
|
||||||
@ -730,7 +766,7 @@ func UtimesNano(path string, ts []Timespec) (err error) {
|
|||||||
if e != nil {
|
if e != nil {
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
defer Close(h)
|
defer CloseHandle(h)
|
||||||
a := NsecToFiletime(TimespecToNsec(ts[0]))
|
a := NsecToFiletime(TimespecToNsec(ts[0]))
|
||||||
w := NsecToFiletime(TimespecToNsec(ts[1]))
|
w := NsecToFiletime(TimespecToNsec(ts[1]))
|
||||||
return SetFileTime(h, nil, &a, &w)
|
return SetFileTime(h, nil, &a, &w)
|
||||||
@ -788,6 +824,9 @@ const socket_error = uintptr(^uint32(0))
|
|||||||
//sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup
|
//sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup
|
||||||
//sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup
|
//sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup
|
||||||
//sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl
|
//sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl
|
||||||
|
//sys WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceBeginW
|
||||||
|
//sys WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceNextW
|
||||||
|
//sys WSALookupServiceEnd(handle Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceEnd
|
||||||
//sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket
|
//sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket
|
||||||
//sys sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto
|
//sys sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto
|
||||||
//sys recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom
|
//sys recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom
|
||||||
@ -824,6 +863,7 @@ const socket_error = uintptr(^uint32(0))
|
|||||||
//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses
|
//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses
|
||||||
//sys GetACP() (acp uint32) = kernel32.GetACP
|
//sys GetACP() (acp uint32) = kernel32.GetACP
|
||||||
//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
|
//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
|
||||||
|
//sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx
|
||||||
|
|
||||||
// For testing: clients can set this flag to force
|
// For testing: clients can set this flag to force
|
||||||
// creation of IPv6 sockets to return EAFNOSUPPORT.
|
// creation of IPv6 sockets to return EAFNOSUPPORT.
|
||||||
@ -872,9 +912,7 @@ func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) {
|
|||||||
p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
|
p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
|
||||||
p[0] = byte(sa.Port >> 8)
|
p[0] = byte(sa.Port >> 8)
|
||||||
p[1] = byte(sa.Port)
|
p[1] = byte(sa.Port)
|
||||||
for i := 0; i < len(sa.Addr); i++ {
|
sa.raw.Addr = sa.Addr
|
||||||
sa.raw.Addr[i] = sa.Addr[i]
|
|
||||||
}
|
|
||||||
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -894,9 +932,7 @@ func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {
|
|||||||
p[0] = byte(sa.Port >> 8)
|
p[0] = byte(sa.Port >> 8)
|
||||||
p[1] = byte(sa.Port)
|
p[1] = byte(sa.Port)
|
||||||
sa.raw.Scope_id = sa.ZoneId
|
sa.raw.Scope_id = sa.ZoneId
|
||||||
for i := 0; i < len(sa.Addr); i++ {
|
sa.raw.Addr = sa.Addr
|
||||||
sa.raw.Addr[i] = sa.Addr[i]
|
|
||||||
}
|
|
||||||
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -937,6 +973,32 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {
|
|||||||
return unsafe.Pointer(&sa.raw), sl, nil
|
return unsafe.Pointer(&sa.raw), sl, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RawSockaddrBth struct {
|
||||||
|
AddressFamily [2]byte
|
||||||
|
BtAddr [8]byte
|
||||||
|
ServiceClassId [16]byte
|
||||||
|
Port [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type SockaddrBth struct {
|
||||||
|
BtAddr uint64
|
||||||
|
ServiceClassId GUID
|
||||||
|
Port uint32
|
||||||
|
|
||||||
|
raw RawSockaddrBth
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) {
|
||||||
|
family := AF_BTH
|
||||||
|
sa.raw = RawSockaddrBth{
|
||||||
|
AddressFamily: *(*[2]byte)(unsafe.Pointer(&family)),
|
||||||
|
BtAddr: *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)),
|
||||||
|
Port: *(*[4]byte)(unsafe.Pointer(&sa.Port)),
|
||||||
|
ServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)),
|
||||||
|
}
|
||||||
|
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
||||||
|
}
|
||||||
|
|
||||||
func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
|
func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
|
||||||
switch rsa.Addr.Family {
|
switch rsa.Addr.Family {
|
||||||
case AF_UNIX:
|
case AF_UNIX:
|
||||||
@ -960,8 +1022,7 @@ func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
|
|||||||
for n < len(pp.Path) && pp.Path[n] != 0 {
|
for n < len(pp.Path) && pp.Path[n] != 0 {
|
||||||
n++
|
n++
|
||||||
}
|
}
|
||||||
bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
|
sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))
|
||||||
sa.Name = string(bytes)
|
|
||||||
return sa, nil
|
return sa, nil
|
||||||
|
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
@ -969,9 +1030,7 @@ func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
|
|||||||
sa := new(SockaddrInet4)
|
sa := new(SockaddrInet4)
|
||||||
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
||||||
sa.Port = int(p[0])<<8 + int(p[1])
|
sa.Port = int(p[0])<<8 + int(p[1])
|
||||||
for i := 0; i < len(sa.Addr); i++ {
|
sa.Addr = pp.Addr
|
||||||
sa.Addr[i] = pp.Addr[i]
|
|
||||||
}
|
|
||||||
return sa, nil
|
return sa, nil
|
||||||
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
@ -980,9 +1039,7 @@ func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
|
|||||||
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
||||||
sa.Port = int(p[0])<<8 + int(p[1])
|
sa.Port = int(p[0])<<8 + int(p[1])
|
||||||
sa.ZoneId = pp.Scope_id
|
sa.ZoneId = pp.Scope_id
|
||||||
for i := 0; i < len(sa.Addr); i++ {
|
sa.Addr = pp.Addr
|
||||||
sa.Addr[i] = pp.Addr[i]
|
|
||||||
}
|
|
||||||
return sa, nil
|
return sa, nil
|
||||||
}
|
}
|
||||||
return nil, syscall.EAFNOSUPPORT
|
return nil, syscall.EAFNOSUPPORT
|
||||||
@ -1016,6 +1073,14 @@ func Connect(fd Handle, sa Sockaddr) (err error) {
|
|||||||
return connect(fd, ptr, n)
|
return connect(fd, ptr, n)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) {
|
||||||
|
ptr, _, err := sa.sockaddr()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return getBestInterfaceEx(ptr, pdwBestIfIndex)
|
||||||
|
}
|
||||||
|
|
||||||
func Getsockname(fd Handle) (sa Sockaddr, err error) {
|
func Getsockname(fd Handle) (sa Sockaddr, err error) {
|
||||||
var rsa RawSockaddrAny
|
var rsa RawSockaddrAny
|
||||||
l := int32(unsafe.Sizeof(rsa))
|
l := int32(unsafe.Sizeof(rsa))
|
||||||
@ -1043,9 +1108,13 @@ func Shutdown(fd Handle, how int) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) {
|
func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) {
|
||||||
rsa, l, err := to.sockaddr()
|
var rsa unsafe.Pointer
|
||||||
if err != nil {
|
var l int32
|
||||||
return err
|
if to != nil {
|
||||||
|
rsa, l, err = to.sockaddr()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine)
|
return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine)
|
||||||
}
|
}
|
||||||
@ -1669,3 +1738,71 @@ func LoadResourceData(module, resInfo Handle) (data []byte, err error) {
|
|||||||
h.Cap = int(size)
|
h.Cap = int(size)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page.
|
||||||
|
type PSAPI_WORKING_SET_EX_BLOCK uint64
|
||||||
|
|
||||||
|
// Valid returns the validity of this page.
|
||||||
|
// If this bit is 1, the subsequent members are valid; otherwise they should be ignored.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool {
|
||||||
|
return (b & 1) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShareCount is the number of processes that share this page. The maximum value of this member is 7.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 {
|
||||||
|
return b.intField(1, 3)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Win32Protection is the memory protection attributes of the page. For a list of values, see
|
||||||
|
// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 {
|
||||||
|
return b.intField(4, 11)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shared returns the shared status of this page.
|
||||||
|
// If this bit is 1, the page can be shared.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool {
|
||||||
|
return (b & (1 << 15)) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// Node is the NUMA node. The maximum value of this member is 63.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 {
|
||||||
|
return b.intField(16, 6)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Locked returns the locked status of this page.
|
||||||
|
// If this bit is 1, the virtual page is locked in physical memory.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool {
|
||||||
|
return (b & (1 << 22)) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// LargePage returns the large page status of this page.
|
||||||
|
// If this bit is 1, the page is a large page.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool {
|
||||||
|
return (b & (1 << 23)) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bad returns the bad status of this page.
|
||||||
|
// If this bit is 1, the page is has been reported as bad.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool {
|
||||||
|
return (b & (1 << 31)) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 {
|
||||||
|
var mask PSAPI_WORKING_SET_EX_BLOCK
|
||||||
|
for pos := start; pos < start+length; pos++ {
|
||||||
|
mask |= (1 << pos)
|
||||||
|
}
|
||||||
|
|
||||||
|
masked := b & mask
|
||||||
|
return uint64(masked >> start)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process.
|
||||||
|
type PSAPI_WORKING_SET_EX_INFORMATION struct {
|
||||||
|
// The virtual address.
|
||||||
|
VirtualAddress Pointer
|
||||||
|
// A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress.
|
||||||
|
VirtualAttributes PSAPI_WORKING_SET_EX_BLOCK
|
||||||
|
}
|
||||||
|
637
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
637
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
@ -66,9 +66,21 @@ var signals = [...]string{
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
FILE_LIST_DIRECTORY = 0x00000001
|
FILE_READ_DATA = 0x00000001
|
||||||
FILE_APPEND_DATA = 0x00000004
|
FILE_READ_ATTRIBUTES = 0x00000080
|
||||||
|
FILE_READ_EA = 0x00000008
|
||||||
|
FILE_WRITE_DATA = 0x00000002
|
||||||
FILE_WRITE_ATTRIBUTES = 0x00000100
|
FILE_WRITE_ATTRIBUTES = 0x00000100
|
||||||
|
FILE_WRITE_EA = 0x00000010
|
||||||
|
FILE_APPEND_DATA = 0x00000004
|
||||||
|
FILE_EXECUTE = 0x00000020
|
||||||
|
|
||||||
|
FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE
|
||||||
|
FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE
|
||||||
|
FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE
|
||||||
|
|
||||||
|
FILE_LIST_DIRECTORY = 0x00000001
|
||||||
|
FILE_TRAVERSE = 0x00000020
|
||||||
|
|
||||||
FILE_SHARE_READ = 0x00000001
|
FILE_SHARE_READ = 0x00000001
|
||||||
FILE_SHARE_WRITE = 0x00000002
|
FILE_SHARE_WRITE = 0x00000002
|
||||||
@ -144,8 +156,14 @@ const (
|
|||||||
MAX_PATH = 260
|
MAX_PATH = 260
|
||||||
MAX_LONG_PATH = 32768
|
MAX_LONG_PATH = 32768
|
||||||
|
|
||||||
|
MAX_MODULE_NAME32 = 255
|
||||||
|
|
||||||
MAX_COMPUTERNAME_LENGTH = 15
|
MAX_COMPUTERNAME_LENGTH = 15
|
||||||
|
|
||||||
|
MAX_DHCPV6_DUID_LENGTH = 130
|
||||||
|
|
||||||
|
MAX_DNS_SUFFIX_STRING_LENGTH = 256
|
||||||
|
|
||||||
TIME_ZONE_ID_UNKNOWN = 0
|
TIME_ZONE_ID_UNKNOWN = 0
|
||||||
TIME_ZONE_ID_STANDARD = 1
|
TIME_ZONE_ID_STANDARD = 1
|
||||||
|
|
||||||
@ -242,6 +260,14 @@ const (
|
|||||||
TH32CS_INHERIT = 0x80000000
|
TH32CS_INHERIT = 0x80000000
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// flags for EnumProcessModulesEx
|
||||||
|
LIST_MODULES_32BIT = 0x01
|
||||||
|
LIST_MODULES_64BIT = 0x02
|
||||||
|
LIST_MODULES_ALL = 0x03
|
||||||
|
LIST_MODULES_DEFAULT = 0x00
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW
|
// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW
|
||||||
FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
|
FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
|
||||||
@ -680,7 +706,7 @@ const (
|
|||||||
WTD_CHOICE_CERT = 5
|
WTD_CHOICE_CERT = 5
|
||||||
|
|
||||||
WTD_STATEACTION_IGNORE = 0x00000000
|
WTD_STATEACTION_IGNORE = 0x00000000
|
||||||
WTD_STATEACTION_VERIFY = 0x00000010
|
WTD_STATEACTION_VERIFY = 0x00000001
|
||||||
WTD_STATEACTION_CLOSE = 0x00000002
|
WTD_STATEACTION_CLOSE = 0x00000002
|
||||||
WTD_STATEACTION_AUTO_CACHE = 0x00000003
|
WTD_STATEACTION_AUTO_CACHE = 0x00000003
|
||||||
WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004
|
WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004
|
||||||
@ -909,14 +935,15 @@ type StartupInfoEx struct {
|
|||||||
|
|
||||||
// ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST.
|
// ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST.
|
||||||
//
|
//
|
||||||
// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, and
|
// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update
|
||||||
// free its memory using ProcThreadAttributeList.Delete.
|
// it with ProcThreadAttributeListContainer.Update, free its memory using
|
||||||
type ProcThreadAttributeList struct {
|
// ProcThreadAttributeListContainer.Delete, and access the list itself using
|
||||||
// This is of type unsafe.Pointer, not of type byte or uintptr, because
|
// ProcThreadAttributeListContainer.List.
|
||||||
// the contents of it is mostly a list of pointers, and in most cases,
|
type ProcThreadAttributeList struct{}
|
||||||
// that's a list of pointers to Go-allocated objects. In order to keep
|
|
||||||
// the GC from collecting these objects, we declare this as unsafe.Pointer.
|
type ProcThreadAttributeListContainer struct {
|
||||||
_ [1]unsafe.Pointer
|
data *ProcThreadAttributeList
|
||||||
|
pointers []unsafe.Pointer
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProcessInformation struct {
|
type ProcessInformation struct {
|
||||||
@ -949,6 +976,21 @@ type ThreadEntry32 struct {
|
|||||||
Flags uint32
|
Flags uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ModuleEntry32 struct {
|
||||||
|
Size uint32
|
||||||
|
ModuleID uint32
|
||||||
|
ProcessID uint32
|
||||||
|
GlblcntUsage uint32
|
||||||
|
ProccntUsage uint32
|
||||||
|
ModBaseAddr uintptr
|
||||||
|
ModBaseSize uint32
|
||||||
|
ModuleHandle Handle
|
||||||
|
Module [MAX_MODULE_NAME32 + 1]uint16
|
||||||
|
ExePath [MAX_PATH]uint16
|
||||||
|
}
|
||||||
|
|
||||||
|
const SizeofModuleEntry32 = unsafe.Sizeof(ModuleEntry32{})
|
||||||
|
|
||||||
type Systemtime struct {
|
type Systemtime struct {
|
||||||
Year uint16
|
Year uint16
|
||||||
Month uint16
|
Month uint16
|
||||||
@ -1201,6 +1243,51 @@ const (
|
|||||||
DnsSectionAdditional = 0x0003
|
DnsSectionAdditional = 0x0003
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// flags of WSALookupService
|
||||||
|
LUP_DEEP = 0x0001
|
||||||
|
LUP_CONTAINERS = 0x0002
|
||||||
|
LUP_NOCONTAINERS = 0x0004
|
||||||
|
LUP_NEAREST = 0x0008
|
||||||
|
LUP_RETURN_NAME = 0x0010
|
||||||
|
LUP_RETURN_TYPE = 0x0020
|
||||||
|
LUP_RETURN_VERSION = 0x0040
|
||||||
|
LUP_RETURN_COMMENT = 0x0080
|
||||||
|
LUP_RETURN_ADDR = 0x0100
|
||||||
|
LUP_RETURN_BLOB = 0x0200
|
||||||
|
LUP_RETURN_ALIASES = 0x0400
|
||||||
|
LUP_RETURN_QUERY_STRING = 0x0800
|
||||||
|
LUP_RETURN_ALL = 0x0FF0
|
||||||
|
LUP_RES_SERVICE = 0x8000
|
||||||
|
|
||||||
|
LUP_FLUSHCACHE = 0x1000
|
||||||
|
LUP_FLUSHPREVIOUS = 0x2000
|
||||||
|
|
||||||
|
LUP_NON_AUTHORITATIVE = 0x4000
|
||||||
|
LUP_SECURE = 0x8000
|
||||||
|
LUP_RETURN_PREFERRED_NAMES = 0x10000
|
||||||
|
LUP_DNS_ONLY = 0x20000
|
||||||
|
|
||||||
|
LUP_ADDRCONFIG = 0x100000
|
||||||
|
LUP_DUAL_ADDR = 0x200000
|
||||||
|
LUP_FILESERVER = 0x400000
|
||||||
|
LUP_DISABLE_IDN_ENCODING = 0x00800000
|
||||||
|
LUP_API_ANSI = 0x01000000
|
||||||
|
|
||||||
|
LUP_RESOLUTION_HANDLE = 0x80000000
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// values of WSAQUERYSET's namespace
|
||||||
|
NS_ALL = 0
|
||||||
|
NS_DNS = 12
|
||||||
|
NS_NLA = 15
|
||||||
|
NS_BTH = 16
|
||||||
|
NS_EMAIL = 37
|
||||||
|
NS_PNRPNAME = 38
|
||||||
|
NS_PNRPCLOUD = 39
|
||||||
|
)
|
||||||
|
|
||||||
type DNSSRVData struct {
|
type DNSSRVData struct {
|
||||||
Target *uint16
|
Target *uint16
|
||||||
Priority uint16
|
Priority uint16
|
||||||
@ -1780,7 +1867,53 @@ type reparseDataBuffer struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
FSCTL_GET_REPARSE_POINT = 0x900A8
|
FSCTL_CREATE_OR_GET_OBJECT_ID = 0x0900C0
|
||||||
|
FSCTL_DELETE_OBJECT_ID = 0x0900A0
|
||||||
|
FSCTL_DELETE_REPARSE_POINT = 0x0900AC
|
||||||
|
FSCTL_DUPLICATE_EXTENTS_TO_FILE = 0x098344
|
||||||
|
FSCTL_DUPLICATE_EXTENTS_TO_FILE_EX = 0x0983E8
|
||||||
|
FSCTL_FILESYSTEM_GET_STATISTICS = 0x090060
|
||||||
|
FSCTL_FILE_LEVEL_TRIM = 0x098208
|
||||||
|
FSCTL_FIND_FILES_BY_SID = 0x09008F
|
||||||
|
FSCTL_GET_COMPRESSION = 0x09003C
|
||||||
|
FSCTL_GET_INTEGRITY_INFORMATION = 0x09027C
|
||||||
|
FSCTL_GET_NTFS_VOLUME_DATA = 0x090064
|
||||||
|
FSCTL_GET_REFS_VOLUME_DATA = 0x0902D8
|
||||||
|
FSCTL_GET_OBJECT_ID = 0x09009C
|
||||||
|
FSCTL_GET_REPARSE_POINT = 0x0900A8
|
||||||
|
FSCTL_GET_RETRIEVAL_POINTER_COUNT = 0x09042B
|
||||||
|
FSCTL_GET_RETRIEVAL_POINTERS = 0x090073
|
||||||
|
FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3
|
||||||
|
FSCTL_IS_PATHNAME_VALID = 0x09002C
|
||||||
|
FSCTL_LMR_SET_LINK_TRACKING_INFORMATION = 0x1400EC
|
||||||
|
FSCTL_MARK_HANDLE = 0x0900FC
|
||||||
|
FSCTL_OFFLOAD_READ = 0x094264
|
||||||
|
FSCTL_OFFLOAD_WRITE = 0x098268
|
||||||
|
FSCTL_PIPE_PEEK = 0x11400C
|
||||||
|
FSCTL_PIPE_TRANSCEIVE = 0x11C017
|
||||||
|
FSCTL_PIPE_WAIT = 0x110018
|
||||||
|
FSCTL_QUERY_ALLOCATED_RANGES = 0x0940CF
|
||||||
|
FSCTL_QUERY_FAT_BPB = 0x090058
|
||||||
|
FSCTL_QUERY_FILE_REGIONS = 0x090284
|
||||||
|
FSCTL_QUERY_ON_DISK_VOLUME_INFO = 0x09013C
|
||||||
|
FSCTL_QUERY_SPARING_INFO = 0x090138
|
||||||
|
FSCTL_READ_FILE_USN_DATA = 0x0900EB
|
||||||
|
FSCTL_RECALL_FILE = 0x090117
|
||||||
|
FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT = 0x090440
|
||||||
|
FSCTL_SET_COMPRESSION = 0x09C040
|
||||||
|
FSCTL_SET_DEFECT_MANAGEMENT = 0x098134
|
||||||
|
FSCTL_SET_ENCRYPTION = 0x0900D7
|
||||||
|
FSCTL_SET_INTEGRITY_INFORMATION = 0x09C280
|
||||||
|
FSCTL_SET_INTEGRITY_INFORMATION_EX = 0x090380
|
||||||
|
FSCTL_SET_OBJECT_ID = 0x090098
|
||||||
|
FSCTL_SET_OBJECT_ID_EXTENDED = 0x0900BC
|
||||||
|
FSCTL_SET_REPARSE_POINT = 0x0900A4
|
||||||
|
FSCTL_SET_SPARSE = 0x0900C4
|
||||||
|
FSCTL_SET_ZERO_DATA = 0x0980C8
|
||||||
|
FSCTL_SET_ZERO_ON_DEALLOCATION = 0x090194
|
||||||
|
FSCTL_SIS_COPYFILE = 0x090100
|
||||||
|
FSCTL_WRITE_USN_CLOSE_RECORD = 0x0900EF
|
||||||
|
|
||||||
MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
|
MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
|
||||||
IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
|
IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
|
||||||
IO_REPARSE_TAG_SYMLINK = 0xA000000C
|
IO_REPARSE_TAG_SYMLINK = 0xA000000C
|
||||||
@ -1916,27 +2049,62 @@ type IpAdapterPrefix struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type IpAdapterAddresses struct {
|
type IpAdapterAddresses struct {
|
||||||
Length uint32
|
Length uint32
|
||||||
IfIndex uint32
|
IfIndex uint32
|
||||||
Next *IpAdapterAddresses
|
Next *IpAdapterAddresses
|
||||||
AdapterName *byte
|
AdapterName *byte
|
||||||
FirstUnicastAddress *IpAdapterUnicastAddress
|
FirstUnicastAddress *IpAdapterUnicastAddress
|
||||||
FirstAnycastAddress *IpAdapterAnycastAddress
|
FirstAnycastAddress *IpAdapterAnycastAddress
|
||||||
FirstMulticastAddress *IpAdapterMulticastAddress
|
FirstMulticastAddress *IpAdapterMulticastAddress
|
||||||
FirstDnsServerAddress *IpAdapterDnsServerAdapter
|
FirstDnsServerAddress *IpAdapterDnsServerAdapter
|
||||||
DnsSuffix *uint16
|
DnsSuffix *uint16
|
||||||
Description *uint16
|
Description *uint16
|
||||||
FriendlyName *uint16
|
FriendlyName *uint16
|
||||||
PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
|
PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
|
||||||
PhysicalAddressLength uint32
|
PhysicalAddressLength uint32
|
||||||
Flags uint32
|
Flags uint32
|
||||||
Mtu uint32
|
Mtu uint32
|
||||||
IfType uint32
|
IfType uint32
|
||||||
OperStatus uint32
|
OperStatus uint32
|
||||||
Ipv6IfIndex uint32
|
Ipv6IfIndex uint32
|
||||||
ZoneIndices [16]uint32
|
ZoneIndices [16]uint32
|
||||||
FirstPrefix *IpAdapterPrefix
|
FirstPrefix *IpAdapterPrefix
|
||||||
/* more fields might be present here. */
|
TransmitLinkSpeed uint64
|
||||||
|
ReceiveLinkSpeed uint64
|
||||||
|
FirstWinsServerAddress *IpAdapterWinsServerAddress
|
||||||
|
FirstGatewayAddress *IpAdapterGatewayAddress
|
||||||
|
Ipv4Metric uint32
|
||||||
|
Ipv6Metric uint32
|
||||||
|
Luid uint64
|
||||||
|
Dhcpv4Server SocketAddress
|
||||||
|
CompartmentId uint32
|
||||||
|
NetworkGuid GUID
|
||||||
|
ConnectionType uint32
|
||||||
|
TunnelType uint32
|
||||||
|
Dhcpv6Server SocketAddress
|
||||||
|
Dhcpv6ClientDuid [MAX_DHCPV6_DUID_LENGTH]byte
|
||||||
|
Dhcpv6ClientDuidLength uint32
|
||||||
|
Dhcpv6Iaid uint32
|
||||||
|
FirstDnsSuffix *IpAdapterDNSSuffix
|
||||||
|
}
|
||||||
|
|
||||||
|
type IpAdapterWinsServerAddress struct {
|
||||||
|
Length uint32
|
||||||
|
Reserved uint32
|
||||||
|
Next *IpAdapterWinsServerAddress
|
||||||
|
Address SocketAddress
|
||||||
|
}
|
||||||
|
|
||||||
|
type IpAdapterGatewayAddress struct {
|
||||||
|
Length uint32
|
||||||
|
Reserved uint32
|
||||||
|
Next *IpAdapterGatewayAddress
|
||||||
|
Address SocketAddress
|
||||||
|
}
|
||||||
|
|
||||||
|
type IpAdapterDNSSuffix struct {
|
||||||
|
Next *IpAdapterDNSSuffix
|
||||||
|
String [MAX_DNS_SUFFIX_STRING_LENGTH]uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -2299,6 +2467,12 @@ type LIST_ENTRY struct {
|
|||||||
Blink *LIST_ENTRY
|
Blink *LIST_ENTRY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RUNTIME_FUNCTION struct {
|
||||||
|
BeginAddress uint32
|
||||||
|
EndAddress uint32
|
||||||
|
UnwindData uint32
|
||||||
|
}
|
||||||
|
|
||||||
type LDR_DATA_TABLE_ENTRY struct {
|
type LDR_DATA_TABLE_ENTRY struct {
|
||||||
reserved1 [2]uintptr
|
reserved1 [2]uintptr
|
||||||
InMemoryOrderLinks LIST_ENTRY
|
InMemoryOrderLinks LIST_ENTRY
|
||||||
@ -2489,6 +2663,60 @@ const (
|
|||||||
FILE_PIPE_SERVER_END = 0x00000001
|
FILE_PIPE_SERVER_END = 0x00000001
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// FileInformationClass for NtSetInformationFile
|
||||||
|
FileBasicInformation = 4
|
||||||
|
FileRenameInformation = 10
|
||||||
|
FileDispositionInformation = 13
|
||||||
|
FilePositionInformation = 14
|
||||||
|
FileEndOfFileInformation = 20
|
||||||
|
FileValidDataLengthInformation = 39
|
||||||
|
FileShortNameInformation = 40
|
||||||
|
FileIoPriorityHintInformation = 43
|
||||||
|
FileReplaceCompletionInformation = 61
|
||||||
|
FileDispositionInformationEx = 64
|
||||||
|
FileCaseSensitiveInformation = 71
|
||||||
|
FileLinkInformation = 72
|
||||||
|
FileCaseSensitiveInformationForceAccessCheck = 75
|
||||||
|
FileKnownFolderInformation = 76
|
||||||
|
|
||||||
|
// Flags for FILE_RENAME_INFORMATION
|
||||||
|
FILE_RENAME_REPLACE_IF_EXISTS = 0x00000001
|
||||||
|
FILE_RENAME_POSIX_SEMANTICS = 0x00000002
|
||||||
|
FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE = 0x00000004
|
||||||
|
FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008
|
||||||
|
FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE = 0x00000010
|
||||||
|
FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE = 0x00000020
|
||||||
|
FILE_RENAME_PRESERVE_AVAILABLE_SPACE = 0x00000030
|
||||||
|
FILE_RENAME_IGNORE_READONLY_ATTRIBUTE = 0x00000040
|
||||||
|
FILE_RENAME_FORCE_RESIZE_TARGET_SR = 0x00000080
|
||||||
|
FILE_RENAME_FORCE_RESIZE_SOURCE_SR = 0x00000100
|
||||||
|
FILE_RENAME_FORCE_RESIZE_SR = 0x00000180
|
||||||
|
|
||||||
|
// Flags for FILE_DISPOSITION_INFORMATION_EX
|
||||||
|
FILE_DISPOSITION_DO_NOT_DELETE = 0x00000000
|
||||||
|
FILE_DISPOSITION_DELETE = 0x00000001
|
||||||
|
FILE_DISPOSITION_POSIX_SEMANTICS = 0x00000002
|
||||||
|
FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004
|
||||||
|
FILE_DISPOSITION_ON_CLOSE = 0x00000008
|
||||||
|
FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010
|
||||||
|
|
||||||
|
// Flags for FILE_CASE_SENSITIVE_INFORMATION
|
||||||
|
FILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001
|
||||||
|
|
||||||
|
// Flags for FILE_LINK_INFORMATION
|
||||||
|
FILE_LINK_REPLACE_IF_EXISTS = 0x00000001
|
||||||
|
FILE_LINK_POSIX_SEMANTICS = 0x00000002
|
||||||
|
FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008
|
||||||
|
FILE_LINK_NO_INCREASE_AVAILABLE_SPACE = 0x00000010
|
||||||
|
FILE_LINK_NO_DECREASE_AVAILABLE_SPACE = 0x00000020
|
||||||
|
FILE_LINK_PRESERVE_AVAILABLE_SPACE = 0x00000030
|
||||||
|
FILE_LINK_IGNORE_READONLY_ATTRIBUTE = 0x00000040
|
||||||
|
FILE_LINK_FORCE_RESIZE_TARGET_SR = 0x00000080
|
||||||
|
FILE_LINK_FORCE_RESIZE_SOURCE_SR = 0x00000100
|
||||||
|
FILE_LINK_FORCE_RESIZE_SR = 0x00000180
|
||||||
|
)
|
||||||
|
|
||||||
// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess.
|
// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess.
|
||||||
const (
|
const (
|
||||||
ProcessBasicInformation = iota
|
ProcessBasicInformation = iota
|
||||||
@ -2605,6 +2833,240 @@ type PROCESS_BASIC_INFORMATION struct {
|
|||||||
InheritedFromUniqueProcessId uintptr
|
InheritedFromUniqueProcessId uintptr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SYSTEM_PROCESS_INFORMATION struct {
|
||||||
|
NextEntryOffset uint32
|
||||||
|
NumberOfThreads uint32
|
||||||
|
WorkingSetPrivateSize int64
|
||||||
|
HardFaultCount uint32
|
||||||
|
NumberOfThreadsHighWatermark uint32
|
||||||
|
CycleTime uint64
|
||||||
|
CreateTime int64
|
||||||
|
UserTime int64
|
||||||
|
KernelTime int64
|
||||||
|
ImageName NTUnicodeString
|
||||||
|
BasePriority int32
|
||||||
|
UniqueProcessID uintptr
|
||||||
|
InheritedFromUniqueProcessID uintptr
|
||||||
|
HandleCount uint32
|
||||||
|
SessionID uint32
|
||||||
|
UniqueProcessKey *uint32
|
||||||
|
PeakVirtualSize uintptr
|
||||||
|
VirtualSize uintptr
|
||||||
|
PageFaultCount uint32
|
||||||
|
PeakWorkingSetSize uintptr
|
||||||
|
WorkingSetSize uintptr
|
||||||
|
QuotaPeakPagedPoolUsage uintptr
|
||||||
|
QuotaPagedPoolUsage uintptr
|
||||||
|
QuotaPeakNonPagedPoolUsage uintptr
|
||||||
|
QuotaNonPagedPoolUsage uintptr
|
||||||
|
PagefileUsage uintptr
|
||||||
|
PeakPagefileUsage uintptr
|
||||||
|
PrivatePageCount uintptr
|
||||||
|
ReadOperationCount int64
|
||||||
|
WriteOperationCount int64
|
||||||
|
OtherOperationCount int64
|
||||||
|
ReadTransferCount int64
|
||||||
|
WriteTransferCount int64
|
||||||
|
OtherTransferCount int64
|
||||||
|
}
|
||||||
|
|
||||||
|
// SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation
|
||||||
|
const (
|
||||||
|
SystemBasicInformation = iota
|
||||||
|
SystemProcessorInformation
|
||||||
|
SystemPerformanceInformation
|
||||||
|
SystemTimeOfDayInformation
|
||||||
|
SystemPathInformation
|
||||||
|
SystemProcessInformation
|
||||||
|
SystemCallCountInformation
|
||||||
|
SystemDeviceInformation
|
||||||
|
SystemProcessorPerformanceInformation
|
||||||
|
SystemFlagsInformation
|
||||||
|
SystemCallTimeInformation
|
||||||
|
SystemModuleInformation
|
||||||
|
SystemLocksInformation
|
||||||
|
SystemStackTraceInformation
|
||||||
|
SystemPagedPoolInformation
|
||||||
|
SystemNonPagedPoolInformation
|
||||||
|
SystemHandleInformation
|
||||||
|
SystemObjectInformation
|
||||||
|
SystemPageFileInformation
|
||||||
|
SystemVdmInstemulInformation
|
||||||
|
SystemVdmBopInformation
|
||||||
|
SystemFileCacheInformation
|
||||||
|
SystemPoolTagInformation
|
||||||
|
SystemInterruptInformation
|
||||||
|
SystemDpcBehaviorInformation
|
||||||
|
SystemFullMemoryInformation
|
||||||
|
SystemLoadGdiDriverInformation
|
||||||
|
SystemUnloadGdiDriverInformation
|
||||||
|
SystemTimeAdjustmentInformation
|
||||||
|
SystemSummaryMemoryInformation
|
||||||
|
SystemMirrorMemoryInformation
|
||||||
|
SystemPerformanceTraceInformation
|
||||||
|
systemObsolete0
|
||||||
|
SystemExceptionInformation
|
||||||
|
SystemCrashDumpStateInformation
|
||||||
|
SystemKernelDebuggerInformation
|
||||||
|
SystemContextSwitchInformation
|
||||||
|
SystemRegistryQuotaInformation
|
||||||
|
SystemExtendServiceTableInformation
|
||||||
|
SystemPrioritySeperation
|
||||||
|
SystemVerifierAddDriverInformation
|
||||||
|
SystemVerifierRemoveDriverInformation
|
||||||
|
SystemProcessorIdleInformation
|
||||||
|
SystemLegacyDriverInformation
|
||||||
|
SystemCurrentTimeZoneInformation
|
||||||
|
SystemLookasideInformation
|
||||||
|
SystemTimeSlipNotification
|
||||||
|
SystemSessionCreate
|
||||||
|
SystemSessionDetach
|
||||||
|
SystemSessionInformation
|
||||||
|
SystemRangeStartInformation
|
||||||
|
SystemVerifierInformation
|
||||||
|
SystemVerifierThunkExtend
|
||||||
|
SystemSessionProcessInformation
|
||||||
|
SystemLoadGdiDriverInSystemSpace
|
||||||
|
SystemNumaProcessorMap
|
||||||
|
SystemPrefetcherInformation
|
||||||
|
SystemExtendedProcessInformation
|
||||||
|
SystemRecommendedSharedDataAlignment
|
||||||
|
SystemComPlusPackage
|
||||||
|
SystemNumaAvailableMemory
|
||||||
|
SystemProcessorPowerInformation
|
||||||
|
SystemEmulationBasicInformation
|
||||||
|
SystemEmulationProcessorInformation
|
||||||
|
SystemExtendedHandleInformation
|
||||||
|
SystemLostDelayedWriteInformation
|
||||||
|
SystemBigPoolInformation
|
||||||
|
SystemSessionPoolTagInformation
|
||||||
|
SystemSessionMappedViewInformation
|
||||||
|
SystemHotpatchInformation
|
||||||
|
SystemObjectSecurityMode
|
||||||
|
SystemWatchdogTimerHandler
|
||||||
|
SystemWatchdogTimerInformation
|
||||||
|
SystemLogicalProcessorInformation
|
||||||
|
SystemWow64SharedInformationObsolete
|
||||||
|
SystemRegisterFirmwareTableInformationHandler
|
||||||
|
SystemFirmwareTableInformation
|
||||||
|
SystemModuleInformationEx
|
||||||
|
SystemVerifierTriageInformation
|
||||||
|
SystemSuperfetchInformation
|
||||||
|
SystemMemoryListInformation
|
||||||
|
SystemFileCacheInformationEx
|
||||||
|
SystemThreadPriorityClientIdInformation
|
||||||
|
SystemProcessorIdleCycleTimeInformation
|
||||||
|
SystemVerifierCancellationInformation
|
||||||
|
SystemProcessorPowerInformationEx
|
||||||
|
SystemRefTraceInformation
|
||||||
|
SystemSpecialPoolInformation
|
||||||
|
SystemProcessIdInformation
|
||||||
|
SystemErrorPortInformation
|
||||||
|
SystemBootEnvironmentInformation
|
||||||
|
SystemHypervisorInformation
|
||||||
|
SystemVerifierInformationEx
|
||||||
|
SystemTimeZoneInformation
|
||||||
|
SystemImageFileExecutionOptionsInformation
|
||||||
|
SystemCoverageInformation
|
||||||
|
SystemPrefetchPatchInformation
|
||||||
|
SystemVerifierFaultsInformation
|
||||||
|
SystemSystemPartitionInformation
|
||||||
|
SystemSystemDiskInformation
|
||||||
|
SystemProcessorPerformanceDistribution
|
||||||
|
SystemNumaProximityNodeInformation
|
||||||
|
SystemDynamicTimeZoneInformation
|
||||||
|
SystemCodeIntegrityInformation
|
||||||
|
SystemProcessorMicrocodeUpdateInformation
|
||||||
|
SystemProcessorBrandString
|
||||||
|
SystemVirtualAddressInformation
|
||||||
|
SystemLogicalProcessorAndGroupInformation
|
||||||
|
SystemProcessorCycleTimeInformation
|
||||||
|
SystemStoreInformation
|
||||||
|
SystemRegistryAppendString
|
||||||
|
SystemAitSamplingValue
|
||||||
|
SystemVhdBootInformation
|
||||||
|
SystemCpuQuotaInformation
|
||||||
|
SystemNativeBasicInformation
|
||||||
|
systemSpare1
|
||||||
|
SystemLowPriorityIoInformation
|
||||||
|
SystemTpmBootEntropyInformation
|
||||||
|
SystemVerifierCountersInformation
|
||||||
|
SystemPagedPoolInformationEx
|
||||||
|
SystemSystemPtesInformationEx
|
||||||
|
SystemNodeDistanceInformation
|
||||||
|
SystemAcpiAuditInformation
|
||||||
|
SystemBasicPerformanceInformation
|
||||||
|
SystemQueryPerformanceCounterInformation
|
||||||
|
SystemSessionBigPoolInformation
|
||||||
|
SystemBootGraphicsInformation
|
||||||
|
SystemScrubPhysicalMemoryInformation
|
||||||
|
SystemBadPageInformation
|
||||||
|
SystemProcessorProfileControlArea
|
||||||
|
SystemCombinePhysicalMemoryInformation
|
||||||
|
SystemEntropyInterruptTimingCallback
|
||||||
|
SystemConsoleInformation
|
||||||
|
SystemPlatformBinaryInformation
|
||||||
|
SystemThrottleNotificationInformation
|
||||||
|
SystemHypervisorProcessorCountInformation
|
||||||
|
SystemDeviceDataInformation
|
||||||
|
SystemDeviceDataEnumerationInformation
|
||||||
|
SystemMemoryTopologyInformation
|
||||||
|
SystemMemoryChannelInformation
|
||||||
|
SystemBootLogoInformation
|
||||||
|
SystemProcessorPerformanceInformationEx
|
||||||
|
systemSpare0
|
||||||
|
SystemSecureBootPolicyInformation
|
||||||
|
SystemPageFileInformationEx
|
||||||
|
SystemSecureBootInformation
|
||||||
|
SystemEntropyInterruptTimingRawInformation
|
||||||
|
SystemPortableWorkspaceEfiLauncherInformation
|
||||||
|
SystemFullProcessInformation
|
||||||
|
SystemKernelDebuggerInformationEx
|
||||||
|
SystemBootMetadataInformation
|
||||||
|
SystemSoftRebootInformation
|
||||||
|
SystemElamCertificateInformation
|
||||||
|
SystemOfflineDumpConfigInformation
|
||||||
|
SystemProcessorFeaturesInformation
|
||||||
|
SystemRegistryReconciliationInformation
|
||||||
|
SystemEdidInformation
|
||||||
|
SystemManufacturingInformation
|
||||||
|
SystemEnergyEstimationConfigInformation
|
||||||
|
SystemHypervisorDetailInformation
|
||||||
|
SystemProcessorCycleStatsInformation
|
||||||
|
SystemVmGenerationCountInformation
|
||||||
|
SystemTrustedPlatformModuleInformation
|
||||||
|
SystemKernelDebuggerFlags
|
||||||
|
SystemCodeIntegrityPolicyInformation
|
||||||
|
SystemIsolatedUserModeInformation
|
||||||
|
SystemHardwareSecurityTestInterfaceResultsInformation
|
||||||
|
SystemSingleModuleInformation
|
||||||
|
SystemAllowedCpuSetsInformation
|
||||||
|
SystemDmaProtectionInformation
|
||||||
|
SystemInterruptCpuSetsInformation
|
||||||
|
SystemSecureBootPolicyFullInformation
|
||||||
|
SystemCodeIntegrityPolicyFullInformation
|
||||||
|
SystemAffinitizedInterruptProcessorInformation
|
||||||
|
SystemRootSiloInformation
|
||||||
|
)
|
||||||
|
|
||||||
|
type RTL_PROCESS_MODULE_INFORMATION struct {
|
||||||
|
Section Handle
|
||||||
|
MappedBase uintptr
|
||||||
|
ImageBase uintptr
|
||||||
|
ImageSize uint32
|
||||||
|
Flags uint32
|
||||||
|
LoadOrderIndex uint16
|
||||||
|
InitOrderIndex uint16
|
||||||
|
LoadCount uint16
|
||||||
|
OffsetToFileName uint16
|
||||||
|
FullPathName [256]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type RTL_PROCESS_MODULES struct {
|
||||||
|
NumberOfModules uint32
|
||||||
|
Modules [1]RTL_PROCESS_MODULE_INFORMATION
|
||||||
|
}
|
||||||
|
|
||||||
// Constants for LocalAlloc flags.
|
// Constants for LocalAlloc flags.
|
||||||
const (
|
const (
|
||||||
LMEM_FIXED = 0x0
|
LMEM_FIXED = 0x0
|
||||||
@ -2699,6 +3161,22 @@ var (
|
|||||||
RT_MANIFEST ResourceID = 24
|
RT_MANIFEST ResourceID = 24
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type VS_FIXEDFILEINFO struct {
|
||||||
|
Signature uint32
|
||||||
|
StrucVersion uint32
|
||||||
|
FileVersionMS uint32
|
||||||
|
FileVersionLS uint32
|
||||||
|
ProductVersionMS uint32
|
||||||
|
ProductVersionLS uint32
|
||||||
|
FileFlagsMask uint32
|
||||||
|
FileFlags uint32
|
||||||
|
FileOS uint32
|
||||||
|
FileType uint32
|
||||||
|
FileSubtype uint32
|
||||||
|
FileDateMS uint32
|
||||||
|
FileDateLS uint32
|
||||||
|
}
|
||||||
|
|
||||||
type COAUTHIDENTITY struct {
|
type COAUTHIDENTITY struct {
|
||||||
User *uint16
|
User *uint16
|
||||||
UserLength uint32
|
UserLength uint32
|
||||||
@ -2772,3 +3250,96 @@ const (
|
|||||||
|
|
||||||
// Flag for QueryFullProcessImageName.
|
// Flag for QueryFullProcessImageName.
|
||||||
const PROCESS_NAME_NATIVE = 1
|
const PROCESS_NAME_NATIVE = 1
|
||||||
|
|
||||||
|
type ModuleInfo struct {
|
||||||
|
BaseOfDll uintptr
|
||||||
|
SizeOfImage uint32
|
||||||
|
EntryPoint uintptr
|
||||||
|
}
|
||||||
|
|
||||||
|
const ALL_PROCESSOR_GROUPS = 0xFFFF
|
||||||
|
|
||||||
|
type Rect struct {
|
||||||
|
Left int32
|
||||||
|
Top int32
|
||||||
|
Right int32
|
||||||
|
Bottom int32
|
||||||
|
}
|
||||||
|
|
||||||
|
type GUIThreadInfo struct {
|
||||||
|
Size uint32
|
||||||
|
Flags uint32
|
||||||
|
Active HWND
|
||||||
|
Focus HWND
|
||||||
|
Capture HWND
|
||||||
|
MenuOwner HWND
|
||||||
|
MoveSize HWND
|
||||||
|
CaretHandle HWND
|
||||||
|
CaretRect Rect
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
DWMWA_NCRENDERING_ENABLED = 1
|
||||||
|
DWMWA_NCRENDERING_POLICY = 2
|
||||||
|
DWMWA_TRANSITIONS_FORCEDISABLED = 3
|
||||||
|
DWMWA_ALLOW_NCPAINT = 4
|
||||||
|
DWMWA_CAPTION_BUTTON_BOUNDS = 5
|
||||||
|
DWMWA_NONCLIENT_RTL_LAYOUT = 6
|
||||||
|
DWMWA_FORCE_ICONIC_REPRESENTATION = 7
|
||||||
|
DWMWA_FLIP3D_POLICY = 8
|
||||||
|
DWMWA_EXTENDED_FRAME_BOUNDS = 9
|
||||||
|
DWMWA_HAS_ICONIC_BITMAP = 10
|
||||||
|
DWMWA_DISALLOW_PEEK = 11
|
||||||
|
DWMWA_EXCLUDED_FROM_PEEK = 12
|
||||||
|
DWMWA_CLOAK = 13
|
||||||
|
DWMWA_CLOAKED = 14
|
||||||
|
DWMWA_FREEZE_REPRESENTATION = 15
|
||||||
|
DWMWA_PASSIVE_UPDATE_MODE = 16
|
||||||
|
DWMWA_USE_HOSTBACKDROPBRUSH = 17
|
||||||
|
DWMWA_USE_IMMERSIVE_DARK_MODE = 20
|
||||||
|
DWMWA_WINDOW_CORNER_PREFERENCE = 33
|
||||||
|
DWMWA_BORDER_COLOR = 34
|
||||||
|
DWMWA_CAPTION_COLOR = 35
|
||||||
|
DWMWA_TEXT_COLOR = 36
|
||||||
|
DWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37
|
||||||
|
)
|
||||||
|
|
||||||
|
type WSAQUERYSET struct {
|
||||||
|
Size uint32
|
||||||
|
ServiceInstanceName *uint16
|
||||||
|
ServiceClassId *GUID
|
||||||
|
Version *WSAVersion
|
||||||
|
Comment *uint16
|
||||||
|
NameSpace uint32
|
||||||
|
NSProviderId *GUID
|
||||||
|
Context *uint16
|
||||||
|
NumberOfProtocols uint32
|
||||||
|
AfpProtocols *AFProtocols
|
||||||
|
QueryString *uint16
|
||||||
|
NumberOfCsAddrs uint32
|
||||||
|
SaBuffer *CSAddrInfo
|
||||||
|
OutputFlags uint32
|
||||||
|
Blob *BLOB
|
||||||
|
}
|
||||||
|
|
||||||
|
type WSAVersion struct {
|
||||||
|
Version uint32
|
||||||
|
EnumerationOfComparison int32
|
||||||
|
}
|
||||||
|
|
||||||
|
type AFProtocols struct {
|
||||||
|
AddressFamily int32
|
||||||
|
Protocol int32
|
||||||
|
}
|
||||||
|
|
||||||
|
type CSAddrInfo struct {
|
||||||
|
LocalAddr SocketAddress
|
||||||
|
RemoteAddr SocketAddress
|
||||||
|
SocketType int32
|
||||||
|
Protocol int32
|
||||||
|
}
|
||||||
|
|
||||||
|
type BLOB struct {
|
||||||
|
Size uint32
|
||||||
|
BlobData *byte
|
||||||
|
}
|
||||||
|
701
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
701
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
@ -36,9 +36,11 @@ func errnoErr(e syscall.Errno) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
modCfgMgr32 = NewLazySystemDLL("CfgMgr32.dll")
|
||||||
modadvapi32 = NewLazySystemDLL("advapi32.dll")
|
modadvapi32 = NewLazySystemDLL("advapi32.dll")
|
||||||
modcrypt32 = NewLazySystemDLL("crypt32.dll")
|
modcrypt32 = NewLazySystemDLL("crypt32.dll")
|
||||||
moddnsapi = NewLazySystemDLL("dnsapi.dll")
|
moddnsapi = NewLazySystemDLL("dnsapi.dll")
|
||||||
|
moddwmapi = NewLazySystemDLL("dwmapi.dll")
|
||||||
modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
|
modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
|
||||||
modkernel32 = NewLazySystemDLL("kernel32.dll")
|
modkernel32 = NewLazySystemDLL("kernel32.dll")
|
||||||
modmswsock = NewLazySystemDLL("mswsock.dll")
|
modmswsock = NewLazySystemDLL("mswsock.dll")
|
||||||
@ -48,13 +50,19 @@ var (
|
|||||||
modpsapi = NewLazySystemDLL("psapi.dll")
|
modpsapi = NewLazySystemDLL("psapi.dll")
|
||||||
modsechost = NewLazySystemDLL("sechost.dll")
|
modsechost = NewLazySystemDLL("sechost.dll")
|
||||||
modsecur32 = NewLazySystemDLL("secur32.dll")
|
modsecur32 = NewLazySystemDLL("secur32.dll")
|
||||||
|
modsetupapi = NewLazySystemDLL("setupapi.dll")
|
||||||
modshell32 = NewLazySystemDLL("shell32.dll")
|
modshell32 = NewLazySystemDLL("shell32.dll")
|
||||||
moduser32 = NewLazySystemDLL("user32.dll")
|
moduser32 = NewLazySystemDLL("user32.dll")
|
||||||
moduserenv = NewLazySystemDLL("userenv.dll")
|
moduserenv = NewLazySystemDLL("userenv.dll")
|
||||||
|
modversion = NewLazySystemDLL("version.dll")
|
||||||
modwintrust = NewLazySystemDLL("wintrust.dll")
|
modwintrust = NewLazySystemDLL("wintrust.dll")
|
||||||
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
||||||
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
||||||
|
|
||||||
|
procCM_Get_DevNode_Status = modCfgMgr32.NewProc("CM_Get_DevNode_Status")
|
||||||
|
procCM_Get_Device_Interface_ListW = modCfgMgr32.NewProc("CM_Get_Device_Interface_ListW")
|
||||||
|
procCM_Get_Device_Interface_List_SizeW = modCfgMgr32.NewProc("CM_Get_Device_Interface_List_SizeW")
|
||||||
|
procCM_MapCrToWin32Err = modCfgMgr32.NewProc("CM_MapCrToWin32Err")
|
||||||
procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups")
|
procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups")
|
||||||
procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges")
|
procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges")
|
||||||
procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid")
|
procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid")
|
||||||
@ -69,6 +77,7 @@ var (
|
|||||||
procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
|
procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
|
||||||
procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW")
|
procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW")
|
||||||
procCopySid = modadvapi32.NewProc("CopySid")
|
procCopySid = modadvapi32.NewProc("CopySid")
|
||||||
|
procCreateProcessAsUserW = modadvapi32.NewProc("CreateProcessAsUserW")
|
||||||
procCreateServiceW = modadvapi32.NewProc("CreateServiceW")
|
procCreateServiceW = modadvapi32.NewProc("CreateServiceW")
|
||||||
procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid")
|
procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid")
|
||||||
procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW")
|
procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW")
|
||||||
@ -113,6 +122,7 @@ var (
|
|||||||
procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken")
|
procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken")
|
||||||
procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W")
|
procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W")
|
||||||
procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW")
|
procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW")
|
||||||
|
procQueryServiceDynamicInformation = modadvapi32.NewProc("QueryServiceDynamicInformation")
|
||||||
procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW")
|
procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW")
|
||||||
procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus")
|
procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus")
|
||||||
procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx")
|
procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx")
|
||||||
@ -123,6 +133,7 @@ var (
|
|||||||
procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW")
|
procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW")
|
||||||
procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW")
|
procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW")
|
||||||
procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW")
|
procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW")
|
||||||
|
procRegisterServiceCtrlHandlerExW = modadvapi32.NewProc("RegisterServiceCtrlHandlerExW")
|
||||||
procReportEventW = modadvapi32.NewProc("ReportEventW")
|
procReportEventW = modadvapi32.NewProc("ReportEventW")
|
||||||
procRevertToSelf = modadvapi32.NewProc("RevertToSelf")
|
procRevertToSelf = modadvapi32.NewProc("RevertToSelf")
|
||||||
procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW")
|
procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW")
|
||||||
@ -165,8 +176,11 @@ var (
|
|||||||
procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
||||||
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
||||||
procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
||||||
|
procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute")
|
||||||
|
procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute")
|
||||||
procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
|
procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
|
||||||
procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo")
|
procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo")
|
||||||
|
procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx")
|
||||||
procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
||||||
procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject")
|
procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject")
|
||||||
procCancelIo = modkernel32.NewProc("CancelIo")
|
procCancelIo = modkernel32.NewProc("CancelIo")
|
||||||
@ -195,6 +209,7 @@ var (
|
|||||||
procDeviceIoControl = modkernel32.NewProc("DeviceIoControl")
|
procDeviceIoControl = modkernel32.NewProc("DeviceIoControl")
|
||||||
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
||||||
procExitProcess = modkernel32.NewProc("ExitProcess")
|
procExitProcess = modkernel32.NewProc("ExitProcess")
|
||||||
|
procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW")
|
||||||
procFindClose = modkernel32.NewProc("FindClose")
|
procFindClose = modkernel32.NewProc("FindClose")
|
||||||
procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification")
|
procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification")
|
||||||
procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW")
|
procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW")
|
||||||
@ -215,6 +230,7 @@ var (
|
|||||||
procFreeLibrary = modkernel32.NewProc("FreeLibrary")
|
procFreeLibrary = modkernel32.NewProc("FreeLibrary")
|
||||||
procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent")
|
procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent")
|
||||||
procGetACP = modkernel32.NewProc("GetACP")
|
procGetACP = modkernel32.NewProc("GetACP")
|
||||||
|
procGetActiveProcessorCount = modkernel32.NewProc("GetActiveProcessorCount")
|
||||||
procGetCommTimeouts = modkernel32.NewProc("GetCommTimeouts")
|
procGetCommTimeouts = modkernel32.NewProc("GetCommTimeouts")
|
||||||
procGetCommandLineW = modkernel32.NewProc("GetCommandLineW")
|
procGetCommandLineW = modkernel32.NewProc("GetCommandLineW")
|
||||||
procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW")
|
procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW")
|
||||||
@ -236,10 +252,12 @@ var (
|
|||||||
procGetFileType = modkernel32.NewProc("GetFileType")
|
procGetFileType = modkernel32.NewProc("GetFileType")
|
||||||
procGetFinalPathNameByHandleW = modkernel32.NewProc("GetFinalPathNameByHandleW")
|
procGetFinalPathNameByHandleW = modkernel32.NewProc("GetFinalPathNameByHandleW")
|
||||||
procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW")
|
procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW")
|
||||||
|
procGetLargePageMinimum = modkernel32.NewProc("GetLargePageMinimum")
|
||||||
procGetLastError = modkernel32.NewProc("GetLastError")
|
procGetLastError = modkernel32.NewProc("GetLastError")
|
||||||
procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
|
procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
|
||||||
procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives")
|
procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives")
|
||||||
procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW")
|
procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW")
|
||||||
|
procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount")
|
||||||
procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW")
|
procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW")
|
||||||
procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW")
|
procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW")
|
||||||
procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW")
|
procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW")
|
||||||
@ -284,6 +302,8 @@ var (
|
|||||||
procLockFileEx = modkernel32.NewProc("LockFileEx")
|
procLockFileEx = modkernel32.NewProc("LockFileEx")
|
||||||
procLockResource = modkernel32.NewProc("LockResource")
|
procLockResource = modkernel32.NewProc("LockResource")
|
||||||
procMapViewOfFile = modkernel32.NewProc("MapViewOfFile")
|
procMapViewOfFile = modkernel32.NewProc("MapViewOfFile")
|
||||||
|
procModule32FirstW = modkernel32.NewProc("Module32FirstW")
|
||||||
|
procModule32NextW = modkernel32.NewProc("Module32NextW")
|
||||||
procMoveFileExW = modkernel32.NewProc("MoveFileExW")
|
procMoveFileExW = modkernel32.NewProc("MoveFileExW")
|
||||||
procMoveFileW = modkernel32.NewProc("MoveFileW")
|
procMoveFileW = modkernel32.NewProc("MoveFileW")
|
||||||
procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar")
|
procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar")
|
||||||
@ -302,6 +322,7 @@ var (
|
|||||||
procReadConsoleW = modkernel32.NewProc("ReadConsoleW")
|
procReadConsoleW = modkernel32.NewProc("ReadConsoleW")
|
||||||
procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW")
|
procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW")
|
||||||
procReadFile = modkernel32.NewProc("ReadFile")
|
procReadFile = modkernel32.NewProc("ReadFile")
|
||||||
|
procReadProcessMemory = modkernel32.NewProc("ReadProcessMemory")
|
||||||
procReleaseMutex = modkernel32.NewProc("ReleaseMutex")
|
procReleaseMutex = modkernel32.NewProc("ReleaseMutex")
|
||||||
procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW")
|
procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW")
|
||||||
procResetEvent = modkernel32.NewProc("ResetEvent")
|
procResetEvent = modkernel32.NewProc("ResetEvent")
|
||||||
@ -344,11 +365,16 @@ var (
|
|||||||
procVirtualFree = modkernel32.NewProc("VirtualFree")
|
procVirtualFree = modkernel32.NewProc("VirtualFree")
|
||||||
procVirtualLock = modkernel32.NewProc("VirtualLock")
|
procVirtualLock = modkernel32.NewProc("VirtualLock")
|
||||||
procVirtualProtect = modkernel32.NewProc("VirtualProtect")
|
procVirtualProtect = modkernel32.NewProc("VirtualProtect")
|
||||||
|
procVirtualProtectEx = modkernel32.NewProc("VirtualProtectEx")
|
||||||
|
procVirtualQuery = modkernel32.NewProc("VirtualQuery")
|
||||||
|
procVirtualQueryEx = modkernel32.NewProc("VirtualQueryEx")
|
||||||
procVirtualUnlock = modkernel32.NewProc("VirtualUnlock")
|
procVirtualUnlock = modkernel32.NewProc("VirtualUnlock")
|
||||||
|
procWTSGetActiveConsoleSessionId = modkernel32.NewProc("WTSGetActiveConsoleSessionId")
|
||||||
procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects")
|
procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects")
|
||||||
procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject")
|
procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject")
|
||||||
procWriteConsoleW = modkernel32.NewProc("WriteConsoleW")
|
procWriteConsoleW = modkernel32.NewProc("WriteConsoleW")
|
||||||
procWriteFile = modkernel32.NewProc("WriteFile")
|
procWriteFile = modkernel32.NewProc("WriteFile")
|
||||||
|
procWriteProcessMemory = modkernel32.NewProc("WriteProcessMemory")
|
||||||
procAcceptEx = modmswsock.NewProc("AcceptEx")
|
procAcceptEx = modmswsock.NewProc("AcceptEx")
|
||||||
procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs")
|
procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs")
|
||||||
procTransmitFile = modmswsock.NewProc("TransmitFile")
|
procTransmitFile = modmswsock.NewProc("TransmitFile")
|
||||||
@ -358,8 +384,13 @@ var (
|
|||||||
procNtCreateFile = modntdll.NewProc("NtCreateFile")
|
procNtCreateFile = modntdll.NewProc("NtCreateFile")
|
||||||
procNtCreateNamedPipeFile = modntdll.NewProc("NtCreateNamedPipeFile")
|
procNtCreateNamedPipeFile = modntdll.NewProc("NtCreateNamedPipeFile")
|
||||||
procNtQueryInformationProcess = modntdll.NewProc("NtQueryInformationProcess")
|
procNtQueryInformationProcess = modntdll.NewProc("NtQueryInformationProcess")
|
||||||
|
procNtQuerySystemInformation = modntdll.NewProc("NtQuerySystemInformation")
|
||||||
|
procNtSetInformationFile = modntdll.NewProc("NtSetInformationFile")
|
||||||
procNtSetInformationProcess = modntdll.NewProc("NtSetInformationProcess")
|
procNtSetInformationProcess = modntdll.NewProc("NtSetInformationProcess")
|
||||||
|
procNtSetSystemInformation = modntdll.NewProc("NtSetSystemInformation")
|
||||||
|
procRtlAddFunctionTable = modntdll.NewProc("RtlAddFunctionTable")
|
||||||
procRtlDefaultNpAcl = modntdll.NewProc("RtlDefaultNpAcl")
|
procRtlDefaultNpAcl = modntdll.NewProc("RtlDefaultNpAcl")
|
||||||
|
procRtlDeleteFunctionTable = modntdll.NewProc("RtlDeleteFunctionTable")
|
||||||
procRtlDosPathNameToNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToNtPathName_U_WithStatus")
|
procRtlDosPathNameToNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToNtPathName_U_WithStatus")
|
||||||
procRtlDosPathNameToRelativeNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToRelativeNtPathName_U_WithStatus")
|
procRtlDosPathNameToRelativeNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToRelativeNtPathName_U_WithStatus")
|
||||||
procRtlGetCurrentPeb = modntdll.NewProc("RtlGetCurrentPeb")
|
procRtlGetCurrentPeb = modntdll.NewProc("RtlGetCurrentPeb")
|
||||||
@ -375,21 +406,67 @@ var (
|
|||||||
procCoTaskMemFree = modole32.NewProc("CoTaskMemFree")
|
procCoTaskMemFree = modole32.NewProc("CoTaskMemFree")
|
||||||
procCoUninitialize = modole32.NewProc("CoUninitialize")
|
procCoUninitialize = modole32.NewProc("CoUninitialize")
|
||||||
procStringFromGUID2 = modole32.NewProc("StringFromGUID2")
|
procStringFromGUID2 = modole32.NewProc("StringFromGUID2")
|
||||||
|
procEnumProcessModules = modpsapi.NewProc("EnumProcessModules")
|
||||||
|
procEnumProcessModulesEx = modpsapi.NewProc("EnumProcessModulesEx")
|
||||||
procEnumProcesses = modpsapi.NewProc("EnumProcesses")
|
procEnumProcesses = modpsapi.NewProc("EnumProcesses")
|
||||||
|
procGetModuleBaseNameW = modpsapi.NewProc("GetModuleBaseNameW")
|
||||||
|
procGetModuleFileNameExW = modpsapi.NewProc("GetModuleFileNameExW")
|
||||||
|
procGetModuleInformation = modpsapi.NewProc("GetModuleInformation")
|
||||||
|
procQueryWorkingSetEx = modpsapi.NewProc("QueryWorkingSetEx")
|
||||||
procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications")
|
procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications")
|
||||||
procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications")
|
procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications")
|
||||||
procGetUserNameExW = modsecur32.NewProc("GetUserNameExW")
|
procGetUserNameExW = modsecur32.NewProc("GetUserNameExW")
|
||||||
procTranslateNameW = modsecur32.NewProc("TranslateNameW")
|
procTranslateNameW = modsecur32.NewProc("TranslateNameW")
|
||||||
|
procSetupDiBuildDriverInfoList = modsetupapi.NewProc("SetupDiBuildDriverInfoList")
|
||||||
|
procSetupDiCallClassInstaller = modsetupapi.NewProc("SetupDiCallClassInstaller")
|
||||||
|
procSetupDiCancelDriverInfoSearch = modsetupapi.NewProc("SetupDiCancelDriverInfoSearch")
|
||||||
|
procSetupDiClassGuidsFromNameExW = modsetupapi.NewProc("SetupDiClassGuidsFromNameExW")
|
||||||
|
procSetupDiClassNameFromGuidExW = modsetupapi.NewProc("SetupDiClassNameFromGuidExW")
|
||||||
|
procSetupDiCreateDeviceInfoListExW = modsetupapi.NewProc("SetupDiCreateDeviceInfoListExW")
|
||||||
|
procSetupDiCreateDeviceInfoW = modsetupapi.NewProc("SetupDiCreateDeviceInfoW")
|
||||||
|
procSetupDiDestroyDeviceInfoList = modsetupapi.NewProc("SetupDiDestroyDeviceInfoList")
|
||||||
|
procSetupDiDestroyDriverInfoList = modsetupapi.NewProc("SetupDiDestroyDriverInfoList")
|
||||||
|
procSetupDiEnumDeviceInfo = modsetupapi.NewProc("SetupDiEnumDeviceInfo")
|
||||||
|
procSetupDiEnumDriverInfoW = modsetupapi.NewProc("SetupDiEnumDriverInfoW")
|
||||||
|
procSetupDiGetClassDevsExW = modsetupapi.NewProc("SetupDiGetClassDevsExW")
|
||||||
|
procSetupDiGetClassInstallParamsW = modsetupapi.NewProc("SetupDiGetClassInstallParamsW")
|
||||||
|
procSetupDiGetDeviceInfoListDetailW = modsetupapi.NewProc("SetupDiGetDeviceInfoListDetailW")
|
||||||
|
procSetupDiGetDeviceInstallParamsW = modsetupapi.NewProc("SetupDiGetDeviceInstallParamsW")
|
||||||
|
procSetupDiGetDeviceInstanceIdW = modsetupapi.NewProc("SetupDiGetDeviceInstanceIdW")
|
||||||
|
procSetupDiGetDevicePropertyW = modsetupapi.NewProc("SetupDiGetDevicePropertyW")
|
||||||
|
procSetupDiGetDeviceRegistryPropertyW = modsetupapi.NewProc("SetupDiGetDeviceRegistryPropertyW")
|
||||||
|
procSetupDiGetDriverInfoDetailW = modsetupapi.NewProc("SetupDiGetDriverInfoDetailW")
|
||||||
|
procSetupDiGetSelectedDevice = modsetupapi.NewProc("SetupDiGetSelectedDevice")
|
||||||
|
procSetupDiGetSelectedDriverW = modsetupapi.NewProc("SetupDiGetSelectedDriverW")
|
||||||
|
procSetupDiOpenDevRegKey = modsetupapi.NewProc("SetupDiOpenDevRegKey")
|
||||||
|
procSetupDiSetClassInstallParamsW = modsetupapi.NewProc("SetupDiSetClassInstallParamsW")
|
||||||
|
procSetupDiSetDeviceInstallParamsW = modsetupapi.NewProc("SetupDiSetDeviceInstallParamsW")
|
||||||
|
procSetupDiSetDeviceRegistryPropertyW = modsetupapi.NewProc("SetupDiSetDeviceRegistryPropertyW")
|
||||||
|
procSetupDiSetSelectedDevice = modsetupapi.NewProc("SetupDiSetSelectedDevice")
|
||||||
|
procSetupDiSetSelectedDriverW = modsetupapi.NewProc("SetupDiSetSelectedDriverW")
|
||||||
|
procSetupUninstallOEMInfW = modsetupapi.NewProc("SetupUninstallOEMInfW")
|
||||||
procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW")
|
procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW")
|
||||||
procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath")
|
procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath")
|
||||||
procShellExecuteW = modshell32.NewProc("ShellExecuteW")
|
procShellExecuteW = modshell32.NewProc("ShellExecuteW")
|
||||||
|
procEnumChildWindows = moduser32.NewProc("EnumChildWindows")
|
||||||
|
procEnumWindows = moduser32.NewProc("EnumWindows")
|
||||||
procExitWindowsEx = moduser32.NewProc("ExitWindowsEx")
|
procExitWindowsEx = moduser32.NewProc("ExitWindowsEx")
|
||||||
|
procGetClassNameW = moduser32.NewProc("GetClassNameW")
|
||||||
|
procGetDesktopWindow = moduser32.NewProc("GetDesktopWindow")
|
||||||
|
procGetForegroundWindow = moduser32.NewProc("GetForegroundWindow")
|
||||||
|
procGetGUIThreadInfo = moduser32.NewProc("GetGUIThreadInfo")
|
||||||
procGetShellWindow = moduser32.NewProc("GetShellWindow")
|
procGetShellWindow = moduser32.NewProc("GetShellWindow")
|
||||||
procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId")
|
procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId")
|
||||||
|
procIsWindow = moduser32.NewProc("IsWindow")
|
||||||
|
procIsWindowUnicode = moduser32.NewProc("IsWindowUnicode")
|
||||||
|
procIsWindowVisible = moduser32.NewProc("IsWindowVisible")
|
||||||
procMessageBoxW = moduser32.NewProc("MessageBoxW")
|
procMessageBoxW = moduser32.NewProc("MessageBoxW")
|
||||||
procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
||||||
procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
||||||
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
||||||
|
procGetFileVersionInfoSizeW = modversion.NewProc("GetFileVersionInfoSizeW")
|
||||||
|
procGetFileVersionInfoW = modversion.NewProc("GetFileVersionInfoW")
|
||||||
|
procVerQueryValueW = modversion.NewProc("VerQueryValueW")
|
||||||
procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx")
|
procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx")
|
||||||
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
||||||
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
||||||
@ -397,6 +474,9 @@ var (
|
|||||||
procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW")
|
procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW")
|
||||||
procWSAGetOverlappedResult = modws2_32.NewProc("WSAGetOverlappedResult")
|
procWSAGetOverlappedResult = modws2_32.NewProc("WSAGetOverlappedResult")
|
||||||
procWSAIoctl = modws2_32.NewProc("WSAIoctl")
|
procWSAIoctl = modws2_32.NewProc("WSAIoctl")
|
||||||
|
procWSALookupServiceBeginW = modws2_32.NewProc("WSALookupServiceBeginW")
|
||||||
|
procWSALookupServiceEnd = modws2_32.NewProc("WSALookupServiceEnd")
|
||||||
|
procWSALookupServiceNextW = modws2_32.NewProc("WSALookupServiceNextW")
|
||||||
procWSARecv = modws2_32.NewProc("WSARecv")
|
procWSARecv = modws2_32.NewProc("WSARecv")
|
||||||
procWSARecvFrom = modws2_32.NewProc("WSARecvFrom")
|
procWSARecvFrom = modws2_32.NewProc("WSARecvFrom")
|
||||||
procWSASend = modws2_32.NewProc("WSASend")
|
procWSASend = modws2_32.NewProc("WSASend")
|
||||||
@ -424,6 +504,30 @@ var (
|
|||||||
procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken")
|
procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procCM_Get_DevNode_Status.Addr(), 4, uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags), 0, 0)
|
||||||
|
ret = CONFIGRET(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_ListW.Addr(), 5, uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags), 0)
|
||||||
|
ret = CONFIGRET(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_List_SizeW.Addr(), 4, uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags), 0, 0)
|
||||||
|
ret = CONFIGRET(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) {
|
||||||
|
r0, _, _ := syscall.Syscall(procCM_MapCrToWin32Err.Addr(), 2, uintptr(configRet), uintptr(defaultWin32Error), 0)
|
||||||
|
ret = Errno(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {
|
func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {
|
||||||
var _p0 uint32
|
var _p0 uint32
|
||||||
if resetToDefault {
|
if resetToDefault {
|
||||||
@ -553,6 +657,18 @@ func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
|
||||||
|
var _p0 uint32
|
||||||
|
if inheritHandles {
|
||||||
|
_p0 = 1
|
||||||
|
}
|
||||||
|
r1, _, e1 := syscall.Syscall12(procCreateProcessAsUserW.Addr(), 11, uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {
|
func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {
|
||||||
r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0)
|
r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0)
|
||||||
handle = Handle(r0)
|
handle = Handle(r0)
|
||||||
@ -942,6 +1058,18 @@ func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, buf
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) {
|
||||||
|
err = procQueryServiceDynamicInformation.Find()
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r1, _, e1 := syscall.Syscall(procQueryServiceDynamicInformation.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {
|
func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
|
r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -1031,6 +1159,15 @@ func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Hand
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall(procRegisterServiceCtrlHandlerExW.Addr(), 3, uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context))
|
||||||
|
handle = Handle(r0)
|
||||||
|
if handle == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
|
func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))
|
r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -1404,6 +1541,22 @@ func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procDwmGetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0)
|
||||||
|
if r0 != 0 {
|
||||||
|
ret = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procDwmSetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0)
|
||||||
|
if r0 != 0 {
|
||||||
|
ret = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
|
func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
|
||||||
r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
|
r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@ -1420,6 +1573,14 @@ func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) {
|
||||||
|
r0, _, _ := syscall.Syscall(procGetBestInterfaceEx.Addr(), 2, uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)), 0)
|
||||||
|
if r0 != 0 {
|
||||||
|
errcode = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
|
func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
|
||||||
r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
|
r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@ -1660,6 +1821,15 @@ func ExitProcess(exitcode uint32) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))
|
||||||
|
n = uint32(r0)
|
||||||
|
if n == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func FindClose(handle Handle) (err error) {
|
func FindClose(handle Handle) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
|
r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -1841,6 +2011,12 @@ func GetACP() (acp uint32) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetActiveProcessorCount(groupNumber uint16) (ret uint32) {
|
||||||
|
r0, _, _ := syscall.Syscall(procGetActiveProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0)
|
||||||
|
ret = uint32(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {
|
func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procGetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0)
|
r1, _, e1 := syscall.Syscall(procGetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -2008,6 +2184,12 @@ func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetLargePageMinimum() (size uintptr) {
|
||||||
|
r0, _, _ := syscall.Syscall(procGetLargePageMinimum.Addr(), 0, 0, 0, 0)
|
||||||
|
size = uintptr(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetLastError() (lasterr error) {
|
func GetLastError() (lasterr error) {
|
||||||
r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
|
r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@ -2043,6 +2225,12 @@ func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err er
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetMaximumProcessorCount(groupNumber uint16) (ret uint32) {
|
||||||
|
r0, _, _ := syscall.Syscall(procGetMaximumProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0)
|
||||||
|
ret = uint32(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {
|
func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))
|
r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))
|
||||||
n = uint32(r0)
|
n = uint32(r0)
|
||||||
@ -2443,6 +2631,22 @@ func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow ui
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procModule32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procModule32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
|
func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
|
r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -2605,7 +2809,7 @@ func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
func readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = &buf[0]
|
_p0 = &buf[0]
|
||||||
@ -2617,6 +2821,14 @@ func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procReadProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func ReleaseMutex(mutex Handle) (err error) {
|
func ReleaseMutex(mutex Handle) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)
|
r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -2971,6 +3183,30 @@ func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procVirtualProtectEx.Addr(), 5, uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procVirtualQuery.Addr(), 3, uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procVirtualQueryEx.Addr(), 4, uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func VirtualUnlock(addr uintptr, length uintptr) (err error) {
|
func VirtualUnlock(addr uintptr, length uintptr) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
|
r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -2979,6 +3215,12 @@ func VirtualUnlock(addr uintptr, length uintptr) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WTSGetActiveConsoleSessionId() (sessionID uint32) {
|
||||||
|
r0, _, _ := syscall.Syscall(procWTSGetActiveConsoleSessionId.Addr(), 0, 0, 0, 0)
|
||||||
|
sessionID = uint32(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {
|
func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {
|
||||||
var _p0 uint32
|
var _p0 uint32
|
||||||
if waitAll {
|
if waitAll {
|
||||||
@ -3009,7 +3251,7 @@ func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32,
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
func writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = &buf[0]
|
_p0 = &buf[0]
|
||||||
@ -3021,6 +3263,14 @@ func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procWriteProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
|
func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
|
r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -3090,6 +3340,22 @@ func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procNtQuerySystemInformation.Addr(), 4, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)), 0, 0)
|
||||||
|
if r0 != 0 {
|
||||||
|
ntstatus = NTStatus(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procNtSetInformationFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class), 0)
|
||||||
|
if r0 != 0 {
|
||||||
|
ntstatus = NTStatus(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) {
|
func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) {
|
||||||
r0, _, _ := syscall.Syscall6(procNtSetInformationProcess.Addr(), 4, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), 0, 0)
|
r0, _, _ := syscall.Syscall6(procNtSetInformationProcess.Addr(), 4, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@ -3098,6 +3364,20 @@ func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.P
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) {
|
||||||
|
r0, _, _ := syscall.Syscall(procNtSetSystemInformation.Addr(), 3, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen))
|
||||||
|
if r0 != 0 {
|
||||||
|
ntstatus = NTStatus(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) {
|
||||||
|
r0, _, _ := syscall.Syscall(procRtlAddFunctionTable.Addr(), 3, uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress))
|
||||||
|
ret = r0 != 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func RtlDefaultNpAcl(acl **ACL) (ntstatus error) {
|
func RtlDefaultNpAcl(acl **ACL) (ntstatus error) {
|
||||||
r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0)
|
r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@ -3106,6 +3386,12 @@ func RtlDefaultNpAcl(acl **ACL) (ntstatus error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) {
|
||||||
|
r0, _, _ := syscall.Syscall(procRtlDeleteFunctionTable.Addr(), 1, uintptr(unsafe.Pointer(functionTable)), 0, 0)
|
||||||
|
ret = r0 != 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {
|
func RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {
|
||||||
r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0)
|
r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@ -3205,6 +3491,22 @@ func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procEnumProcessModules.Addr(), 4, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procEnumProcessModulesEx.Addr(), 5, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {
|
func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {
|
||||||
var _p0 *uint32
|
var _p0 *uint32
|
||||||
if len(processIds) > 0 {
|
if len(processIds) > 0 {
|
||||||
@ -3217,6 +3519,38 @@ func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procGetModuleBaseNameW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procGetModuleFileNameExW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procGetModuleInformation.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procQueryWorkingSetEx.Addr(), 3, uintptr(process), uintptr(pv), uintptr(cb))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) {
|
func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) {
|
||||||
ret = procSubscribeServiceChangeNotifications.Find()
|
ret = procSubscribeServiceChangeNotifications.Find()
|
||||||
if ret != nil {
|
if ret != nil {
|
||||||
@ -3254,6 +3588,233 @@ func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiBuildDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiCallClassInstaller.Addr(), 3, uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiCancelDriverInfoSearch.Addr(), 1, uintptr(deviceInfoSet), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiClassGuidsFromNameExW.Addr(), 6, uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiClassNameFromGuidExW.Addr(), 6, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall6(procSetupDiCreateDeviceInfoListExW.Addr(), 4, uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0)
|
||||||
|
handle = DevInfo(r0)
|
||||||
|
if handle == DevInfo(InvalidHandle) {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procSetupDiCreateDeviceInfoW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiDestroyDeviceInfoList.Addr(), 1, uintptr(deviceInfoSet), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiDestroyDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiEnumDeviceInfo.Addr(), 3, uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiEnumDriverInfoW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall9(procSetupDiGetClassDevsExW.Addr(), 7, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0)
|
||||||
|
handle = DevInfo(r0)
|
||||||
|
if handle == DevInfo(InvalidHandle) {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiGetClassInstallParamsW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInfoListDetailW.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiGetDeviceInstanceIdW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procSetupDiGetDevicePropertyW.Addr(), 8, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procSetupDiGetDeviceRegistryPropertyW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiGetDriverInfoDetailW.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall6(procSetupDiOpenDevRegKey.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired))
|
||||||
|
key = Handle(r0)
|
||||||
|
if key == InvalidHandle {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiSetClassInstallParamsW.Addr(), 4, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiSetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiSetDeviceRegistryPropertyW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupUninstallOEMInfW.Addr(), 3, uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
|
func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
|
r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
|
||||||
argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
|
argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
|
||||||
@ -3279,6 +3840,19 @@ func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *ui
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) {
|
||||||
|
syscall.Syscall(procEnumChildWindows.Addr(), 3, uintptr(hwnd), uintptr(enumFunc), uintptr(param))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procEnumWindows.Addr(), 2, uintptr(enumFunc), uintptr(param), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func ExitWindowsEx(flags uint32, reason uint32) (err error) {
|
func ExitWindowsEx(flags uint32, reason uint32) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0)
|
r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -3287,6 +3861,35 @@ func ExitWindowsEx(flags uint32, reason uint32) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall(procGetClassNameW.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount))
|
||||||
|
copied = int32(r0)
|
||||||
|
if copied == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetDesktopWindow() (hwnd HWND) {
|
||||||
|
r0, _, _ := syscall.Syscall(procGetDesktopWindow.Addr(), 0, 0, 0, 0)
|
||||||
|
hwnd = HWND(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetForegroundWindow() (hwnd HWND) {
|
||||||
|
r0, _, _ := syscall.Syscall(procGetForegroundWindow.Addr(), 0, 0, 0, 0)
|
||||||
|
hwnd = HWND(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procGetGUIThreadInfo.Addr(), 2, uintptr(thread), uintptr(unsafe.Pointer(info)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetShellWindow() (shellWindow HWND) {
|
func GetShellWindow() (shellWindow HWND) {
|
||||||
r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0)
|
r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0)
|
||||||
shellWindow = HWND(r0)
|
shellWindow = HWND(r0)
|
||||||
@ -3302,6 +3905,24 @@ func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsWindow(hwnd HWND) (isWindow bool) {
|
||||||
|
r0, _, _ := syscall.Syscall(procIsWindow.Addr(), 1, uintptr(hwnd), 0, 0)
|
||||||
|
isWindow = r0 != 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsWindowUnicode(hwnd HWND) (isUnicode bool) {
|
||||||
|
r0, _, _ := syscall.Syscall(procIsWindowUnicode.Addr(), 1, uintptr(hwnd), 0, 0)
|
||||||
|
isUnicode = r0 != 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsWindowVisible(hwnd HWND) (isVisible bool) {
|
||||||
|
r0, _, _ := syscall.Syscall(procIsWindowVisible.Addr(), 1, uintptr(hwnd), 0, 0)
|
||||||
|
isVisible = r0 != 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
|
func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
|
||||||
r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)
|
r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)
|
||||||
ret = int32(r0)
|
ret = int32(r0)
|
||||||
@ -3339,6 +3960,58 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) {
|
||||||
|
var _p0 *uint16
|
||||||
|
_p0, err = syscall.UTF16PtrFromString(filename)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return _GetFileVersionInfoSize(_p0, zeroHandle)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall(procGetFileVersionInfoSizeW.Addr(), 2, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)), 0)
|
||||||
|
bufSize = uint32(r0)
|
||||||
|
if bufSize == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {
|
||||||
|
var _p0 *uint16
|
||||||
|
_p0, err = syscall.UTF16PtrFromString(filename)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return _GetFileVersionInfo(_p0, handle, bufSize, buffer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procGetFileVersionInfoW.Addr(), 4, uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {
|
||||||
|
var _p0 *uint16
|
||||||
|
_p0, err = syscall.UTF16PtrFromString(subBlock)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procVerQueryValueW.Addr(), 4, uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {
|
func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {
|
||||||
r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))
|
r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@ -3397,6 +4070,30 @@ func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbo
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procWSALookupServiceBeginW.Addr(), 3, uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle)))
|
||||||
|
if r1 == socket_error {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func WSALookupServiceEnd(handle Handle) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procWSALookupServiceEnd.Addr(), 1, uintptr(handle), 0, 0)
|
||||||
|
if r1 == socket_error {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procWSALookupServiceNextW.Addr(), 4, uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet)), 0, 0)
|
||||||
|
if r1 == socket_error {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
|
func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
|
r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
|
||||||
if r1 == socket_error {
|
if r1 == socket_error {
|
||||||
|
3
vendor/golang.org/x/text/AUTHORS
generated
vendored
3
vendor/golang.org/x/text/AUTHORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code refers to The Go Authors for copyright purposes.
|
|
||||||
# The master list of authors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/AUTHORS.
|
|
3
vendor/golang.org/x/text/CONTRIBUTORS
generated
vendored
3
vendor/golang.org/x/text/CONTRIBUTORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code was written by the Go contributors.
|
|
||||||
# The master list of contributors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/CONTRIBUTORS.
|
|
9
vendor/golang.org/x/text/encoding/htmlindex/tables.go
generated
vendored
9
vendor/golang.org/x/text/encoding/htmlindex/tables.go
generated
vendored
@ -93,8 +93,11 @@ var canonical = [numEncodings]string{
|
|||||||
|
|
||||||
var nameMap = map[string]htmlEncoding{
|
var nameMap = map[string]htmlEncoding{
|
||||||
"unicode-1-1-utf-8": utf8,
|
"unicode-1-1-utf-8": utf8,
|
||||||
|
"unicode11utf8": utf8,
|
||||||
|
"unicode20utf8": utf8,
|
||||||
"utf-8": utf8,
|
"utf-8": utf8,
|
||||||
"utf8": utf8,
|
"utf8": utf8,
|
||||||
|
"x-unicode20utf8": utf8,
|
||||||
"866": ibm866,
|
"866": ibm866,
|
||||||
"cp866": ibm866,
|
"cp866": ibm866,
|
||||||
"csibm866": ibm866,
|
"csibm866": ibm866,
|
||||||
@ -307,7 +310,13 @@ var nameMap = map[string]htmlEncoding{
|
|||||||
"iso-2022-cn-ext": replacement,
|
"iso-2022-cn-ext": replacement,
|
||||||
"iso-2022-kr": replacement,
|
"iso-2022-kr": replacement,
|
||||||
"replacement": replacement,
|
"replacement": replacement,
|
||||||
|
"unicodefffe": utf16be,
|
||||||
"utf-16be": utf16be,
|
"utf-16be": utf16be,
|
||||||
|
"csunicode": utf16le,
|
||||||
|
"iso-10646-ucs-2": utf16le,
|
||||||
|
"ucs-2": utf16le,
|
||||||
|
"unicode": utf16le,
|
||||||
|
"unicodefeff": utf16le,
|
||||||
"utf-16": utf16le,
|
"utf-16": utf16le,
|
||||||
"utf-16le": utf16le,
|
"utf-16le": utf16le,
|
||||||
"x-user-defined": xUserDefined,
|
"x-user-defined": xUserDefined,
|
||||||
|
8
vendor/golang.org/x/text/encoding/internal/identifier/mib.go
generated
vendored
8
vendor/golang.org/x/text/encoding/internal/identifier/mib.go
generated
vendored
@ -905,6 +905,14 @@ const (
|
|||||||
// https://www.unicode.org/notes/tn6/
|
// https://www.unicode.org/notes/tn6/
|
||||||
BOCU1 MIB = 1020
|
BOCU1 MIB = 1020
|
||||||
|
|
||||||
|
// UTF7IMAP is the MIB identifier with IANA name UTF-7-IMAP.
|
||||||
|
//
|
||||||
|
// Note: This charset is used to encode Unicode in IMAP mailbox names;
|
||||||
|
// see section 5.1.3 of rfc3501 . It should never be used
|
||||||
|
// outside this context. A name has been assigned so that charset processing
|
||||||
|
// implementations can refer to it in a consistent way.
|
||||||
|
UTF7IMAP MIB = 1021
|
||||||
|
|
||||||
// Windows30Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.0-Latin-1.
|
// Windows30Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.0-Latin-1.
|
||||||
//
|
//
|
||||||
// Extended ISO 8859-1 Latin-1 for Windows 3.0.
|
// Extended ISO 8859-1 Latin-1 for Windows 3.0.
|
||||||
|
2
vendor/golang.org/x/text/encoding/internal/internal.go
generated
vendored
2
vendor/golang.org/x/text/encoding/internal/internal.go
generated
vendored
@ -64,7 +64,7 @@ func (e FuncEncoding) NewEncoder() *encoding.Encoder {
|
|||||||
// byte.
|
// byte.
|
||||||
type RepertoireError byte
|
type RepertoireError byte
|
||||||
|
|
||||||
// Error implements the error interrface.
|
// Error implements the error interface.
|
||||||
func (r RepertoireError) Error() string {
|
func (r RepertoireError) Error() string {
|
||||||
return "encoding: rune not supported by encoding."
|
return "encoding: rune not supported by encoding."
|
||||||
}
|
}
|
||||||
|
6
vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go
generated
vendored
6
vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go
generated
vendored
@ -55,6 +55,8 @@ loop:
|
|||||||
// Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC
|
// Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC
|
||||||
// as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk
|
// as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk
|
||||||
// says to treat "gbk" as Code Page 936.
|
// says to treat "gbk" as Code Page 936.
|
||||||
|
// GBK’s decoder is gb18030’s decoder. https://encoding.spec.whatwg.org/#gbk-decoder
|
||||||
|
// If byte is 0x80, return code point U+20AC. https://encoding.spec.whatwg.org/#gb18030-decoder
|
||||||
case c0 == 0x80:
|
case c0 == 0x80:
|
||||||
r, size = '€', 1
|
r, size = '€', 1
|
||||||
|
|
||||||
@ -180,7 +182,9 @@ func (e gbkEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err
|
|||||||
// Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC
|
// Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC
|
||||||
// as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk
|
// as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk
|
||||||
// says to treat "gbk" as Code Page 936.
|
// says to treat "gbk" as Code Page 936.
|
||||||
if r == '€' {
|
// GBK’s encoder is gb18030’s encoder with its _is GBK_ set to true. https://encoding.spec.whatwg.org/#gbk-encoder
|
||||||
|
// If _is GBK_ is true and code point is U+20AC, return byte 0x80. https://encoding.spec.whatwg.org/#gb18030-encoder
|
||||||
|
if !e.gb18030 && r == '€' {
|
||||||
r = 0x80
|
r = 0x80
|
||||||
goto write1
|
goto write1
|
||||||
}
|
}
|
||||||
|
2
vendor/golang.org/x/text/internal/language/compact/language.go
generated
vendored
2
vendor/golang.org/x/text/internal/language/compact/language.go
generated
vendored
@ -118,7 +118,7 @@ func (t Tag) Parent() Tag {
|
|||||||
return Tag{language: lang, locale: lang}
|
return Tag{language: lang, locale: lang}
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns token t and the rest of the string.
|
// nextToken returns token t and the rest of the string.
|
||||||
func nextToken(s string) (t, tail string) {
|
func nextToken(s string) (t, tail string) {
|
||||||
p := strings.Index(s[1:], "-")
|
p := strings.Index(s[1:], "-")
|
||||||
if p == -1 {
|
if p == -1 {
|
||||||
|
6
vendor/golang.org/x/text/internal/language/compact/tables.go
generated
vendored
6
vendor/golang.org/x/text/internal/language/compact/tables.go
generated
vendored
@ -966,7 +966,7 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
|
|||||||
0x3fd00000, 0x3fd00072, 0x3fd000da, 0x3fd0010c,
|
0x3fd00000, 0x3fd00072, 0x3fd000da, 0x3fd0010c,
|
||||||
0x3ff00000, 0x3ff000d1, 0x40100000, 0x401000c3,
|
0x3ff00000, 0x3ff000d1, 0x40100000, 0x401000c3,
|
||||||
0x40200000, 0x4020004c, 0x40700000, 0x40800000,
|
0x40200000, 0x4020004c, 0x40700000, 0x40800000,
|
||||||
0x4085a000, 0x4085a0ba, 0x408e3000, 0x408e30ba,
|
0x4085a000, 0x4085a0ba, 0x408e8000, 0x408e80ba,
|
||||||
0x40c00000, 0x40c000b3, 0x41200000, 0x41200111,
|
0x40c00000, 0x40c000b3, 0x41200000, 0x41200111,
|
||||||
0x41600000, 0x4160010f, 0x41c00000, 0x41d00000,
|
0x41600000, 0x4160010f, 0x41c00000, 0x41d00000,
|
||||||
// Entry 280 - 29F
|
// Entry 280 - 29F
|
||||||
@ -994,7 +994,7 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
|
|||||||
0x4ae00130, 0x4b400000, 0x4b400099, 0x4b4000e8,
|
0x4ae00130, 0x4b400000, 0x4b400099, 0x4b4000e8,
|
||||||
0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000,
|
0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000,
|
||||||
0x4bc20137, 0x4bc5a000, 0x4bc5a137, 0x4be00000,
|
0x4bc20137, 0x4bc5a000, 0x4bc5a137, 0x4be00000,
|
||||||
0x4be5a000, 0x4be5a0b4, 0x4beeb000, 0x4beeb0b4,
|
0x4be5a000, 0x4be5a0b4, 0x4bef1000, 0x4bef10b4,
|
||||||
0x4c000000, 0x4c300000, 0x4c30013e, 0x4c900000,
|
0x4c000000, 0x4c300000, 0x4c30013e, 0x4c900000,
|
||||||
// Entry 2E0 - 2FF
|
// Entry 2E0 - 2FF
|
||||||
0x4c900001, 0x4cc00000, 0x4cc0012f, 0x4ce00000,
|
0x4c900001, 0x4cc00000, 0x4cc0012f, 0x4ce00000,
|
||||||
@ -1012,4 +1012,4 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
|
|||||||
|
|
||||||
const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix"
|
const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix"
|
||||||
|
|
||||||
// Total table size 3147 bytes (3KiB); checksum: BE816D44
|
// Total table size 3147 bytes (3KiB); checksum: 6772C83C
|
||||||
|
45
vendor/golang.org/x/text/internal/language/language.go
generated
vendored
45
vendor/golang.org/x/text/internal/language/language.go
generated
vendored
@ -251,6 +251,13 @@ func (t Tag) Parent() Tag {
|
|||||||
|
|
||||||
// ParseExtension parses s as an extension and returns it on success.
|
// ParseExtension parses s as an extension and returns it on success.
|
||||||
func ParseExtension(s string) (ext string, err error) {
|
func ParseExtension(s string) (ext string, err error) {
|
||||||
|
defer func() {
|
||||||
|
if recover() != nil {
|
||||||
|
ext = ""
|
||||||
|
err = ErrSyntax
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
scan := makeScannerString(s)
|
scan := makeScannerString(s)
|
||||||
var end int
|
var end int
|
||||||
if n := len(scan.token); n != 1 {
|
if n := len(scan.token); n != 1 {
|
||||||
@ -402,7 +409,7 @@ func (t Tag) SetTypeForKey(key, value string) (Tag, error) {
|
|||||||
return t, nil
|
return t, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// findKeyAndType returns the start and end position for the type corresponding
|
// findTypeForKey returns the start and end position for the type corresponding
|
||||||
// to key or the point at which to insert the key-value pair if the type
|
// to key or the point at which to insert the key-value pair if the type
|
||||||
// wasn't found. The hasExt return value reports whether an -u extension was present.
|
// wasn't found. The hasExt return value reports whether an -u extension was present.
|
||||||
// Note: the extensions are typically very small and are likely to contain
|
// Note: the extensions are typically very small and are likely to contain
|
||||||
@ -461,7 +468,14 @@ func (t Tag) findTypeForKey(key string) (start, sep, end int, hasExt bool) {
|
|||||||
// ParseBase parses a 2- or 3-letter ISO 639 code.
|
// ParseBase parses a 2- or 3-letter ISO 639 code.
|
||||||
// It returns a ValueError if s is a well-formed but unknown language identifier
|
// It returns a ValueError if s is a well-formed but unknown language identifier
|
||||||
// or another error if another error occurred.
|
// or another error if another error occurred.
|
||||||
func ParseBase(s string) (Language, error) {
|
func ParseBase(s string) (l Language, err error) {
|
||||||
|
defer func() {
|
||||||
|
if recover() != nil {
|
||||||
|
l = 0
|
||||||
|
err = ErrSyntax
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
if n := len(s); n < 2 || 3 < n {
|
if n := len(s); n < 2 || 3 < n {
|
||||||
return 0, ErrSyntax
|
return 0, ErrSyntax
|
||||||
}
|
}
|
||||||
@ -472,7 +486,14 @@ func ParseBase(s string) (Language, error) {
|
|||||||
// ParseScript parses a 4-letter ISO 15924 code.
|
// ParseScript parses a 4-letter ISO 15924 code.
|
||||||
// It returns a ValueError if s is a well-formed but unknown script identifier
|
// It returns a ValueError if s is a well-formed but unknown script identifier
|
||||||
// or another error if another error occurred.
|
// or another error if another error occurred.
|
||||||
func ParseScript(s string) (Script, error) {
|
func ParseScript(s string) (scr Script, err error) {
|
||||||
|
defer func() {
|
||||||
|
if recover() != nil {
|
||||||
|
scr = 0
|
||||||
|
err = ErrSyntax
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
if len(s) != 4 {
|
if len(s) != 4 {
|
||||||
return 0, ErrSyntax
|
return 0, ErrSyntax
|
||||||
}
|
}
|
||||||
@ -489,7 +510,14 @@ func EncodeM49(r int) (Region, error) {
|
|||||||
// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code.
|
// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code.
|
||||||
// It returns a ValueError if s is a well-formed but unknown region identifier
|
// It returns a ValueError if s is a well-formed but unknown region identifier
|
||||||
// or another error if another error occurred.
|
// or another error if another error occurred.
|
||||||
func ParseRegion(s string) (Region, error) {
|
func ParseRegion(s string) (r Region, err error) {
|
||||||
|
defer func() {
|
||||||
|
if recover() != nil {
|
||||||
|
r = 0
|
||||||
|
err = ErrSyntax
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
if n := len(s); n < 2 || 3 < n {
|
if n := len(s); n < 2 || 3 < n {
|
||||||
return 0, ErrSyntax
|
return 0, ErrSyntax
|
||||||
}
|
}
|
||||||
@ -578,7 +606,14 @@ type Variant struct {
|
|||||||
|
|
||||||
// ParseVariant parses and returns a Variant. An error is returned if s is not
|
// ParseVariant parses and returns a Variant. An error is returned if s is not
|
||||||
// a valid variant.
|
// a valid variant.
|
||||||
func ParseVariant(s string) (Variant, error) {
|
func ParseVariant(s string) (v Variant, err error) {
|
||||||
|
defer func() {
|
||||||
|
if recover() != nil {
|
||||||
|
v = Variant{}
|
||||||
|
err = ErrSyntax
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
s = strings.ToLower(s)
|
s = strings.ToLower(s)
|
||||||
if id, ok := variantIndex[s]; ok {
|
if id, ok := variantIndex[s]; ok {
|
||||||
return Variant{id, s}, nil
|
return Variant{id, s}, nil
|
||||||
|
4
vendor/golang.org/x/text/internal/language/lookup.go
generated
vendored
4
vendor/golang.org/x/text/internal/language/lookup.go
generated
vendored
@ -50,7 +50,7 @@ func (id Language) Canonicalize() (Language, AliasType) {
|
|||||||
return normLang(id)
|
return normLang(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// mapLang returns the mapped langID of id according to mapping m.
|
// normLang returns the mapped langID of id according to mapping m.
|
||||||
func normLang(id Language) (Language, AliasType) {
|
func normLang(id Language) (Language, AliasType) {
|
||||||
k := sort.Search(len(AliasMap), func(i int) bool {
|
k := sort.Search(len(AliasMap), func(i int) bool {
|
||||||
return AliasMap[i].From >= uint16(id)
|
return AliasMap[i].From >= uint16(id)
|
||||||
@ -328,7 +328,7 @@ func (r Region) IsPrivateUse() bool {
|
|||||||
return r.typ()&iso3166UserAssigned != 0
|
return r.typ()&iso3166UserAssigned != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
type Script uint8
|
type Script uint16
|
||||||
|
|
||||||
// getScriptID returns the script id for string s. It assumes that s
|
// getScriptID returns the script id for string s. It assumes that s
|
||||||
// is of the format [A-Z][a-z]{3}.
|
// is of the format [A-Z][a-z]{3}.
|
||||||
|
31
vendor/golang.org/x/text/internal/language/parse.go
generated
vendored
31
vendor/golang.org/x/text/internal/language/parse.go
generated
vendored
@ -232,6 +232,13 @@ func Parse(s string) (t Tag, err error) {
|
|||||||
if s == "" {
|
if s == "" {
|
||||||
return Und, ErrSyntax
|
return Und, ErrSyntax
|
||||||
}
|
}
|
||||||
|
defer func() {
|
||||||
|
if recover() != nil {
|
||||||
|
t = Und
|
||||||
|
err = ErrSyntax
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}()
|
||||||
if len(s) <= maxAltTaglen {
|
if len(s) <= maxAltTaglen {
|
||||||
b := [maxAltTaglen]byte{}
|
b := [maxAltTaglen]byte{}
|
||||||
for i, c := range s {
|
for i, c := range s {
|
||||||
@ -263,7 +270,7 @@ func parse(scan *scanner, s string) (t Tag, err error) {
|
|||||||
} else if n >= 4 {
|
} else if n >= 4 {
|
||||||
return Und, ErrSyntax
|
return Und, ErrSyntax
|
||||||
} else { // the usual case
|
} else { // the usual case
|
||||||
t, end = parseTag(scan)
|
t, end = parseTag(scan, true)
|
||||||
if n := len(scan.token); n == 1 {
|
if n := len(scan.token); n == 1 {
|
||||||
t.pExt = uint16(end)
|
t.pExt = uint16(end)
|
||||||
end = parseExtensions(scan)
|
end = parseExtensions(scan)
|
||||||
@ -289,7 +296,8 @@ func parse(scan *scanner, s string) (t Tag, err error) {
|
|||||||
|
|
||||||
// parseTag parses language, script, region and variants.
|
// parseTag parses language, script, region and variants.
|
||||||
// It returns a Tag and the end position in the input that was parsed.
|
// It returns a Tag and the end position in the input that was parsed.
|
||||||
func parseTag(scan *scanner) (t Tag, end int) {
|
// If doNorm is true, then <lang>-<extlang> will be normalized to <extlang>.
|
||||||
|
func parseTag(scan *scanner, doNorm bool) (t Tag, end int) {
|
||||||
var e error
|
var e error
|
||||||
// TODO: set an error if an unknown lang, script or region is encountered.
|
// TODO: set an error if an unknown lang, script or region is encountered.
|
||||||
t.LangID, e = getLangID(scan.token)
|
t.LangID, e = getLangID(scan.token)
|
||||||
@ -300,14 +308,17 @@ func parseTag(scan *scanner) (t Tag, end int) {
|
|||||||
for len(scan.token) == 3 && isAlpha(scan.token[0]) {
|
for len(scan.token) == 3 && isAlpha(scan.token[0]) {
|
||||||
// From http://tools.ietf.org/html/bcp47, <lang>-<extlang> tags are equivalent
|
// From http://tools.ietf.org/html/bcp47, <lang>-<extlang> tags are equivalent
|
||||||
// to a tag of the form <extlang>.
|
// to a tag of the form <extlang>.
|
||||||
lang, e := getLangID(scan.token)
|
if doNorm {
|
||||||
if lang != 0 {
|
lang, e := getLangID(scan.token)
|
||||||
t.LangID = lang
|
if lang != 0 {
|
||||||
copy(scan.b[langStart:], lang.String())
|
t.LangID = lang
|
||||||
scan.b[langStart+3] = '-'
|
langStr := lang.String()
|
||||||
scan.start = langStart + 4
|
copy(scan.b[langStart:], langStr)
|
||||||
|
scan.b[langStart+len(langStr)] = '-'
|
||||||
|
scan.start = langStart + len(langStr) + 1
|
||||||
|
}
|
||||||
|
scan.gobble(e)
|
||||||
}
|
}
|
||||||
scan.gobble(e)
|
|
||||||
end = scan.scan()
|
end = scan.scan()
|
||||||
}
|
}
|
||||||
if len(scan.token) == 4 && isAlpha(scan.token[0]) {
|
if len(scan.token) == 4 && isAlpha(scan.token[0]) {
|
||||||
@ -552,7 +563,7 @@ func parseExtension(scan *scanner) int {
|
|||||||
case 't': // https://www.ietf.org/rfc/rfc6497.txt
|
case 't': // https://www.ietf.org/rfc/rfc6497.txt
|
||||||
scan.scan()
|
scan.scan()
|
||||||
if n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) {
|
if n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) {
|
||||||
_, end = parseTag(scan)
|
_, end = parseTag(scan, false)
|
||||||
scan.toLower(start, end)
|
scan.toLower(start, end)
|
||||||
}
|
}
|
||||||
for len(scan.token) == 2 && !isAlpha(scan.token[1]) {
|
for len(scan.token) == 2 && !isAlpha(scan.token[1]) {
|
||||||
|
868
vendor/golang.org/x/text/internal/language/tables.go
generated
vendored
868
vendor/golang.org/x/text/internal/language/tables.go
generated
vendored
File diff suppressed because it is too large
Load Diff
2
vendor/golang.org/x/text/internal/utf8internal/utf8internal.go
generated
vendored
2
vendor/golang.org/x/text/internal/utf8internal/utf8internal.go
generated
vendored
@ -74,7 +74,7 @@ type AcceptRange struct {
|
|||||||
|
|
||||||
// AcceptRanges is a slice of AcceptRange values. For a given byte sequence b
|
// AcceptRanges is a slice of AcceptRange values. For a given byte sequence b
|
||||||
//
|
//
|
||||||
// AcceptRanges[First[b[0]]>>AcceptShift]
|
// AcceptRanges[First[b[0]]>>AcceptShift]
|
||||||
//
|
//
|
||||||
// will give the value of AcceptRange for the multi-byte UTF-8 sequence starting
|
// will give the value of AcceptRange for the multi-byte UTF-8 sequence starting
|
||||||
// at b[0].
|
// at b[0].
|
||||||
|
44
vendor/golang.org/x/text/language/doc.go
generated
vendored
44
vendor/golang.org/x/text/language/doc.go
generated
vendored
@ -10,18 +10,17 @@
|
|||||||
// and provides the user with the best experience
|
// and provides the user with the best experience
|
||||||
// (see https://blog.golang.org/matchlang).
|
// (see https://blog.golang.org/matchlang).
|
||||||
//
|
//
|
||||||
//
|
// # Matching preferred against supported languages
|
||||||
// Matching preferred against supported languages
|
|
||||||
//
|
//
|
||||||
// A Matcher for an application that supports English, Australian English,
|
// A Matcher for an application that supports English, Australian English,
|
||||||
// Danish, and standard Mandarin can be created as follows:
|
// Danish, and standard Mandarin can be created as follows:
|
||||||
//
|
//
|
||||||
// var matcher = language.NewMatcher([]language.Tag{
|
// var matcher = language.NewMatcher([]language.Tag{
|
||||||
// language.English, // The first language is used as fallback.
|
// language.English, // The first language is used as fallback.
|
||||||
// language.MustParse("en-AU"),
|
// language.MustParse("en-AU"),
|
||||||
// language.Danish,
|
// language.Danish,
|
||||||
// language.Chinese,
|
// language.Chinese,
|
||||||
// })
|
// })
|
||||||
//
|
//
|
||||||
// This list of supported languages is typically implied by the languages for
|
// This list of supported languages is typically implied by the languages for
|
||||||
// which there exists translations of the user interface.
|
// which there exists translations of the user interface.
|
||||||
@ -30,14 +29,14 @@
|
|||||||
// language tags.
|
// language tags.
|
||||||
// The MatchString finds best matches for such strings:
|
// The MatchString finds best matches for such strings:
|
||||||
//
|
//
|
||||||
// handler(w http.ResponseWriter, r *http.Request) {
|
// handler(w http.ResponseWriter, r *http.Request) {
|
||||||
// lang, _ := r.Cookie("lang")
|
// lang, _ := r.Cookie("lang")
|
||||||
// accept := r.Header.Get("Accept-Language")
|
// accept := r.Header.Get("Accept-Language")
|
||||||
// tag, _ := language.MatchStrings(matcher, lang.String(), accept)
|
// tag, _ := language.MatchStrings(matcher, lang.String(), accept)
|
||||||
//
|
//
|
||||||
// // tag should now be used for the initialization of any
|
// // tag should now be used for the initialization of any
|
||||||
// // locale-specific service.
|
// // locale-specific service.
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// The Matcher's Match method can be used to match Tags directly.
|
// The Matcher's Match method can be used to match Tags directly.
|
||||||
//
|
//
|
||||||
@ -48,8 +47,7 @@
|
|||||||
// For instance, it will know that a reader of Bokmål Danish can read Norwegian
|
// For instance, it will know that a reader of Bokmål Danish can read Norwegian
|
||||||
// and will know that Cantonese ("yue") is a good match for "zh-HK".
|
// and will know that Cantonese ("yue") is a good match for "zh-HK".
|
||||||
//
|
//
|
||||||
//
|
// # Using match results
|
||||||
// Using match results
|
|
||||||
//
|
//
|
||||||
// To guarantee a consistent user experience to the user it is important to
|
// To guarantee a consistent user experience to the user it is important to
|
||||||
// use the same language tag for the selection of any locale-specific services.
|
// use the same language tag for the selection of any locale-specific services.
|
||||||
@ -58,9 +56,9 @@
|
|||||||
// More subtly confusing is using the wrong sorting order or casing
|
// More subtly confusing is using the wrong sorting order or casing
|
||||||
// algorithm for a certain language.
|
// algorithm for a certain language.
|
||||||
//
|
//
|
||||||
// All the packages in x/text that provide locale-specific services
|
// All the packages in x/text that provide locale-specific services
|
||||||
// (e.g. collate, cases) should be initialized with the tag that was
|
// (e.g. collate, cases) should be initialized with the tag that was
|
||||||
// obtained at the start of an interaction with the user.
|
// obtained at the start of an interaction with the user.
|
||||||
//
|
//
|
||||||
// Note that Tag that is returned by Match and MatchString may differ from any
|
// Note that Tag that is returned by Match and MatchString may differ from any
|
||||||
// of the supported languages, as it may contain carried over settings from
|
// of the supported languages, as it may contain carried over settings from
|
||||||
@ -70,8 +68,7 @@
|
|||||||
// Match and MatchString both return the index of the matched supported tag
|
// Match and MatchString both return the index of the matched supported tag
|
||||||
// to simplify associating such data with the matched tag.
|
// to simplify associating such data with the matched tag.
|
||||||
//
|
//
|
||||||
//
|
// # Canonicalization
|
||||||
// Canonicalization
|
|
||||||
//
|
//
|
||||||
// If one uses the Matcher to compare languages one does not need to
|
// If one uses the Matcher to compare languages one does not need to
|
||||||
// worry about canonicalization.
|
// worry about canonicalization.
|
||||||
@ -92,10 +89,9 @@
|
|||||||
// equivalence relations. The CanonType type can be used to alter the
|
// equivalence relations. The CanonType type can be used to alter the
|
||||||
// canonicalization form.
|
// canonicalization form.
|
||||||
//
|
//
|
||||||
// References
|
// # References
|
||||||
//
|
//
|
||||||
// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47
|
// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47
|
||||||
//
|
|
||||||
package language // import "golang.org/x/text/language"
|
package language // import "golang.org/x/text/language"
|
||||||
|
|
||||||
// TODO: explanation on how to match languages for your own locale-specific
|
// TODO: explanation on how to match languages for your own locale-specific
|
||||||
|
39
vendor/golang.org/x/text/language/go1_1.go
generated
vendored
39
vendor/golang.org/x/text/language/go1_1.go
generated
vendored
@ -1,39 +0,0 @@
|
|||||||
// Copyright 2013 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.
|
|
||||||
|
|
||||||
//go:build !go1.2
|
|
||||||
// +build !go1.2
|
|
||||||
|
|
||||||
package language
|
|
||||||
|
|
||||||
import "sort"
|
|
||||||
|
|
||||||
func sortStable(s sort.Interface) {
|
|
||||||
ss := stableSort{
|
|
||||||
s: s,
|
|
||||||
pos: make([]int, s.Len()),
|
|
||||||
}
|
|
||||||
for i := range ss.pos {
|
|
||||||
ss.pos[i] = i
|
|
||||||
}
|
|
||||||
sort.Sort(&ss)
|
|
||||||
}
|
|
||||||
|
|
||||||
type stableSort struct {
|
|
||||||
s sort.Interface
|
|
||||||
pos []int
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *stableSort) Len() int {
|
|
||||||
return len(s.pos)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *stableSort) Less(i, j int) bool {
|
|
||||||
return s.s.Less(i, j) || !s.s.Less(j, i) && s.pos[i] < s.pos[j]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *stableSort) Swap(i, j int) {
|
|
||||||
s.s.Swap(i, j)
|
|
||||||
s.pos[i], s.pos[j] = s.pos[j], s.pos[i]
|
|
||||||
}
|
|
12
vendor/golang.org/x/text/language/go1_2.go
generated
vendored
12
vendor/golang.org/x/text/language/go1_2.go
generated
vendored
@ -1,12 +0,0 @@
|
|||||||
// Copyright 2013 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.
|
|
||||||
|
|
||||||
//go:build go1.2
|
|
||||||
// +build go1.2
|
|
||||||
|
|
||||||
package language
|
|
||||||
|
|
||||||
import "sort"
|
|
||||||
|
|
||||||
var sortStable = sort.Stable
|
|
2
vendor/golang.org/x/text/language/language.go
generated
vendored
2
vendor/golang.org/x/text/language/language.go
generated
vendored
@ -344,7 +344,7 @@ func (t Tag) Parent() Tag {
|
|||||||
return Tag(compact.Tag(t).Parent())
|
return Tag(compact.Tag(t).Parent())
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns token t and the rest of the string.
|
// nextToken returns token t and the rest of the string.
|
||||||
func nextToken(s string) (t, tail string) {
|
func nextToken(s string) (t, tail string) {
|
||||||
p := strings.Index(s[1:], "-")
|
p := strings.Index(s[1:], "-")
|
||||||
if p == -1 {
|
if p == -1 {
|
||||||
|
2
vendor/golang.org/x/text/language/match.go
generated
vendored
2
vendor/golang.org/x/text/language/match.go
generated
vendored
@ -545,7 +545,7 @@ type bestMatch struct {
|
|||||||
// match as the preferred match.
|
// match as the preferred match.
|
||||||
//
|
//
|
||||||
// If pin is true and have and tag are a strong match, it will henceforth only
|
// If pin is true and have and tag are a strong match, it will henceforth only
|
||||||
// consider matches for this language. This corresponds to the nothing that most
|
// consider matches for this language. This corresponds to the idea that most
|
||||||
// users have a strong preference for the first defined language. A user can
|
// users have a strong preference for the first defined language. A user can
|
||||||
// still prefer a second language over a dialect of the preferred language by
|
// still prefer a second language over a dialect of the preferred language by
|
||||||
// explicitly specifying dialects, e.g. "en, nl, en-GB". In this case pin should
|
// explicitly specifying dialects, e.g. "en, nl, en-GB". In this case pin should
|
||||||
|
30
vendor/golang.org/x/text/language/parse.go
generated
vendored
30
vendor/golang.org/x/text/language/parse.go
generated
vendored
@ -6,6 +6,7 @@ package language
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -43,6 +44,13 @@ func Parse(s string) (t Tag, err error) {
|
|||||||
// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
|
// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
|
||||||
// The resulting tag is canonicalized using the canonicalization type c.
|
// The resulting tag is canonicalized using the canonicalization type c.
|
||||||
func (c CanonType) Parse(s string) (t Tag, err error) {
|
func (c CanonType) Parse(s string) (t Tag, err error) {
|
||||||
|
defer func() {
|
||||||
|
if recover() != nil {
|
||||||
|
t = Tag{}
|
||||||
|
err = language.ErrSyntax
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
tt, err := language.Parse(s)
|
tt, err := language.Parse(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return makeTag(tt), err
|
return makeTag(tt), err
|
||||||
@ -79,6 +87,13 @@ func Compose(part ...interface{}) (t Tag, err error) {
|
|||||||
// tag is returned after canonicalizing using CanonType c. If one or more errors
|
// tag is returned after canonicalizing using CanonType c. If one or more errors
|
||||||
// are encountered, one of the errors is returned.
|
// are encountered, one of the errors is returned.
|
||||||
func (c CanonType) Compose(part ...interface{}) (t Tag, err error) {
|
func (c CanonType) Compose(part ...interface{}) (t Tag, err error) {
|
||||||
|
defer func() {
|
||||||
|
if recover() != nil {
|
||||||
|
t = Tag{}
|
||||||
|
err = language.ErrSyntax
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
var b language.Builder
|
var b language.Builder
|
||||||
if err = update(&b, part...); err != nil {
|
if err = update(&b, part...); err != nil {
|
||||||
return und, err
|
return und, err
|
||||||
@ -133,6 +148,7 @@ func update(b *language.Builder, part ...interface{}) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight")
|
var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight")
|
||||||
|
var errTagListTooLarge = errors.New("tag list exceeds max length")
|
||||||
|
|
||||||
// ParseAcceptLanguage parses the contents of an Accept-Language header as
|
// ParseAcceptLanguage parses the contents of an Accept-Language header as
|
||||||
// defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and
|
// defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and
|
||||||
@ -142,6 +158,18 @@ var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight")
|
|||||||
// Tags with a weight of zero will be dropped. An error will be returned if the
|
// Tags with a weight of zero will be dropped. An error will be returned if the
|
||||||
// input could not be parsed.
|
// input could not be parsed.
|
||||||
func ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) {
|
func ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) {
|
||||||
|
defer func() {
|
||||||
|
if recover() != nil {
|
||||||
|
tag = nil
|
||||||
|
q = nil
|
||||||
|
err = language.ErrSyntax
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
if strings.Count(s, "-") > 1000 {
|
||||||
|
return nil, nil, errTagListTooLarge
|
||||||
|
}
|
||||||
|
|
||||||
var entry string
|
var entry string
|
||||||
for s != "" {
|
for s != "" {
|
||||||
if entry, s = split(s, ','); entry == "" {
|
if entry, s = split(s, ','); entry == "" {
|
||||||
@ -179,7 +207,7 @@ func ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) {
|
|||||||
tag = append(tag, t)
|
tag = append(tag, t)
|
||||||
q = append(q, float32(w))
|
q = append(q, float32(w))
|
||||||
}
|
}
|
||||||
sortStable(&tagSort{tag, q})
|
sort.Stable(&tagSort{tag, q})
|
||||||
return tag, q, nil
|
return tag, q, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
vendor/golang.org/x/text/language/tables.go
generated
vendored
18
vendor/golang.org/x/text/language/tables.go
generated
vendored
@ -39,12 +39,12 @@ const (
|
|||||||
_Hani = 57
|
_Hani = 57
|
||||||
_Hans = 59
|
_Hans = 59
|
||||||
_Hant = 60
|
_Hant = 60
|
||||||
_Qaaa = 143
|
_Qaaa = 147
|
||||||
_Qaai = 151
|
_Qaai = 155
|
||||||
_Qabx = 192
|
_Qabx = 196
|
||||||
_Zinh = 245
|
_Zinh = 252
|
||||||
_Zyyy = 250
|
_Zyyy = 257
|
||||||
_Zzzz = 251
|
_Zzzz = 258
|
||||||
)
|
)
|
||||||
|
|
||||||
var regionToGroups = []uint8{ // 358 elements
|
var regionToGroups = []uint8{ // 358 elements
|
||||||
@ -265,9 +265,9 @@ var matchScript = []scriptIntelligibility{ // 26 elements
|
|||||||
13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x36, haveScript: 0x5a, distance: 0xa},
|
13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x36, haveScript: 0x5a, distance: 0xa},
|
||||||
14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
|
14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
|
||||||
15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
|
15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
|
||||||
16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xcf, haveScript: 0x5a, distance: 0xa},
|
16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xd4, haveScript: 0x5a, distance: 0xa},
|
||||||
17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xde, haveScript: 0x5a, distance: 0xa},
|
17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xe3, haveScript: 0x5a, distance: 0xa},
|
||||||
18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xe1, haveScript: 0x5a, distance: 0xa},
|
18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xe6, haveScript: 0x5a, distance: 0xa},
|
||||||
19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x2c, haveScript: 0x5a, distance: 0xa},
|
19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x2c, haveScript: 0x5a, distance: 0xa},
|
||||||
20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa},
|
20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa},
|
||||||
21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
|
21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
|
||||||
|
2
vendor/golang.org/x/text/runes/runes.go
generated
vendored
2
vendor/golang.org/x/text/runes/runes.go
generated
vendored
@ -33,7 +33,7 @@ func In(rt *unicode.RangeTable) Set {
|
|||||||
return setFunc(func(r rune) bool { return unicode.Is(rt, r) })
|
return setFunc(func(r rune) bool { return unicode.Is(rt, r) })
|
||||||
}
|
}
|
||||||
|
|
||||||
// In creates a Set with a Contains method that returns true for all runes not
|
// NotIn creates a Set with a Contains method that returns true for all runes not
|
||||||
// in the given RangeTable.
|
// in the given RangeTable.
|
||||||
func NotIn(rt *unicode.RangeTable) Set {
|
func NotIn(rt *unicode.RangeTable) Set {
|
||||||
return setFunc(func(r rune) bool { return !unicode.Is(rt, r) })
|
return setFunc(func(r rune) bool { return !unicode.Is(rt, r) })
|
||||||
|
6
vendor/modules.txt
vendored
6
vendor/modules.txt
vendored
@ -1,16 +1,16 @@
|
|||||||
# github.com/mattn/go-sqlite3 v1.14.7
|
# github.com/mattn/go-sqlite3 v1.14.7
|
||||||
## explicit
|
## explicit
|
||||||
github.com/mattn/go-sqlite3
|
github.com/mattn/go-sqlite3
|
||||||
# golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420
|
# golang.org/x/net v0.8.0
|
||||||
## explicit
|
## explicit
|
||||||
golang.org/x/net/html
|
golang.org/x/net/html
|
||||||
golang.org/x/net/html/atom
|
golang.org/x/net/html/atom
|
||||||
golang.org/x/net/html/charset
|
golang.org/x/net/html/charset
|
||||||
# golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6
|
# golang.org/x/sys v0.6.0
|
||||||
## explicit
|
## explicit
|
||||||
golang.org/x/sys/internal/unsafeheader
|
golang.org/x/sys/internal/unsafeheader
|
||||||
golang.org/x/sys/windows
|
golang.org/x/sys/windows
|
||||||
# golang.org/x/text v0.3.6
|
# golang.org/x/text v0.8.0
|
||||||
golang.org/x/text/encoding
|
golang.org/x/text/encoding
|
||||||
golang.org/x/text/encoding/charmap
|
golang.org/x/text/encoding/charmap
|
||||||
golang.org/x/text/encoding/htmlindex
|
golang.org/x/text/encoding/htmlindex
|
||||||
|
Loading…
x
Reference in New Issue
Block a user