1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use shared::minwindef::{BOOL, DWORD};
use um::winnt::{HANDLE, LPCH, LPCSTR, LPCWSTR, LPSTR, LPWCH, LPWSTR, PHANDLE};
extern "system" {
    pub fn GetEnvironmentStrings() -> LPCH;
    pub fn GetEnvironmentStringsW() -> LPWCH;
    pub fn SetEnvironmentStringsW(
        NewEnvironment: LPWCH,
    ) -> BOOL;
    pub fn FreeEnvironmentStringsA(
        penv: LPCH,
    ) -> BOOL;
    pub fn FreeEnvironmentStringsW(
        penv: LPWCH,
    ) -> BOOL;
    pub fn GetStdHandle(
        nStdHandle: DWORD,
    ) -> HANDLE;
    pub fn SetStdHandle(
        nStdHandle: DWORD,
        hHandle: HANDLE,
    ) -> BOOL;
    pub fn SetStdHandleEx(
        nStdHandle: DWORD,
        hHandle: HANDLE,
        phPrevValue: PHANDLE,
    ) -> BOOL;
    pub fn GetCommandLineA() -> LPSTR;
    pub fn GetCommandLineW() -> LPWSTR;
    pub fn GetEnvironmentVariableA(
        lpName: LPCSTR,
        lpBuffer: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetEnvironmentVariableW(
        lpName: LPCWSTR,
        lpBuffer: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn SetEnvironmentVariableA(
        lpName: LPCSTR,
        lpValue: LPCSTR,
    ) -> BOOL;
    pub fn SetEnvironmentVariableW(
        lpName: LPCWSTR,
        lpValue: LPCWSTR,
    ) -> BOOL;
    pub fn ExpandEnvironmentStringsA(
        lpSrc: LPCSTR,
        lpDst: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn ExpandEnvironmentStringsW(
        lpSrc: LPCWSTR,
        lpDst: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn SetCurrentDirectoryA(
        lpPathName: LPCSTR,
    ) -> BOOL;
    pub fn SetCurrentDirectoryW(
        lpPathName: LPCWSTR,
    ) -> BOOL;
    pub fn GetCurrentDirectoryA(
        nBufferLength: DWORD,
        lpBuffer: LPSTR,
    ) -> DWORD;
    pub fn GetCurrentDirectoryW(
        nBufferLength: DWORD,
        lpBuffer: LPWSTR,
    ) -> DWORD;
    pub fn SearchPathW(
        lpPath: LPCWSTR,
        lpFileName: LPCWSTR,
        lpExtension: LPCWSTR,
        nBufferLength: DWORD,
        lpBuffer: LPWSTR,
        lpFilePart: *mut LPWSTR,
    ) -> DWORD;
    pub fn SearchPathA(
        lpPath: LPCSTR,
        lpFileName: LPCSTR,
        lpExtension: LPCSTR,
        nBufferLength: DWORD,
        lpBuffer: LPSTR,
        lpFilePart: *mut LPSTR,
    ) -> DWORD;
    pub fn NeedCurrentDirectoryForExePathA(
        ExeName: LPCSTR,
    ) -> BOOL;
    pub fn NeedCurrentDirectoryForExePathW(
        ExeName: LPCWSTR,
    ) -> BOOL;
}