1 | //
|
---|
2 | // MINSTALL.DLL (c) Copyright 2002-2005 Martin Kiewitz
|
---|
3 | //
|
---|
4 | // This file is part of MINSTALL.DLL for OS/2 / eComStation
|
---|
5 | //
|
---|
6 | // MINSTALL.DLL is free software: you can redistribute it and/or modify
|
---|
7 | // it under the terms of the GNU General Public License as published by
|
---|
8 | // the Free Software Foundation, either version 3 of the License, or
|
---|
9 | // (at your option) any later version.
|
---|
10 | //
|
---|
11 | // MINSTALL.DLL is distributed in the hope that it will be useful,
|
---|
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
14 | // GNU General Public License for more details.
|
---|
15 | //
|
---|
16 | // You should have received a copy of the GNU General Public License
|
---|
17 | // along with MINSTALL.DLL. If not, see <http://www.gnu.org/licenses/>.
|
---|
18 | //
|
---|
19 |
|
---|
20 | // Byte-Packing, these structures are fixed. They must not get optimized
|
---|
21 | #pragma pack(1)
|
---|
22 |
|
---|
23 | typedef struct _MINSTINIHEADER {
|
---|
24 | ULONG ID;
|
---|
25 | ULONG Size;
|
---|
26 | PVOID NextPtr;
|
---|
27 | } MINSTINIHEADER;
|
---|
28 | typedef MINSTINIHEADER *PMINSTINIHEADER;
|
---|
29 |
|
---|
30 | // ****************************************************************************
|
---|
31 |
|
---|
32 | // Some of those structures exist in MM-OS/2 headers, but I redefine them here
|
---|
33 | // cause some of them spread havoc on VAC3. Some of them are also pretty
|
---|
34 | // undocumented or are used in multiple ways (mmio-(Codec1/Codec2)-Install)
|
---|
35 |
|
---|
36 | typedef struct _EA_JOINEA {
|
---|
37 | MINSTINIHEADER Header;
|
---|
38 | CHAR JoinFileName[MINSTMAX_PATHLENGTH];
|
---|
39 | CHAR JoinEAFileName[MINSTMAX_PATHLENGTH];
|
---|
40 | } EA_JOINEA;
|
---|
41 | typedef EA_JOINEA *PEA_JOINEA;
|
---|
42 | #define EA_JOINEA_ID 0xD56F3A0A
|
---|
43 |
|
---|
44 | typedef struct _EA_JOINLONGNAMEEA {
|
---|
45 | MINSTINIHEADER Header;
|
---|
46 | CHAR JoinLongName[MINSTMAX_PATHLENGTH];
|
---|
47 | CHAR JoinLongFileName[MINSTMAX_PATHLENGTH];
|
---|
48 | CHAR JoinEALongFileName[MINSTMAX_PATHLENGTH];
|
---|
49 | } EA_JOINLONGNAMEEA;
|
---|
50 | typedef EA_JOINLONGNAMEEA *PEA_JOINLONGNAMEEA;
|
---|
51 | #define EA_JOINLONGNAMEEA_ID 0x0A110003
|
---|
52 |
|
---|
53 | #define MCIMAX_DEVICENAMELENGTH 20
|
---|
54 | #define MCIMAX_VERSIONLENGTH 6
|
---|
55 | #define MCIMAX_PRODLENGTH 40
|
---|
56 | #define MCIMAX_PDDNAMELENGTH 9
|
---|
57 | #define MCIMAX_ALIASNAMELENGTH 20
|
---|
58 | #define MCIMAX_DEVPARAMSLENGTH 128
|
---|
59 | #define MCIMAX_CLASSES 10 // Actual Limit 9 Classes
|
---|
60 | #define MCIMAX_CONNECTORS 10
|
---|
61 | #define MCIMAX_EXTENSIONS 25
|
---|
62 | #define MCIMAX_EXTENSIONNAMELENGTH 4
|
---|
63 | #define MCIMAX_TYPELISTLENGTH 257
|
---|
64 |
|
---|
65 | typedef struct _MCI_MCIINSTALLDRV {
|
---|
66 | MINSTINIHEADER Header;
|
---|
67 | CHAR szInstallName[MCIMAX_DEVICENAMELENGTH];
|
---|
68 | USHORT usDeviceType;
|
---|
69 | ULONG ulDeviceFlag;
|
---|
70 | CHAR szVersionNumber[MCIMAX_VERSIONLENGTH];
|
---|
71 | CHAR szProductInfo[MCIMAX_PRODLENGTH];
|
---|
72 | CHAR szMCDDriver[MCIMAX_DEVICENAMELENGTH];
|
---|
73 | CHAR szVSDDriver[MCIMAX_DEVICENAMELENGTH];
|
---|
74 | CHAR szPDDName[MCIMAX_PDDNAMELENGTH];
|
---|
75 | CHAR szMCDTable[MCIMAX_DEVICENAMELENGTH];
|
---|
76 | CHAR szVSDTable[MCIMAX_DEVICENAMELENGTH];
|
---|
77 | USHORT usShareType;
|
---|
78 | CHAR szResourceName[MCIMAX_DEVICENAMELENGTH];
|
---|
79 | USHORT usResourceUnits;
|
---|
80 | USHORT usResourceClasses;
|
---|
81 | USHORT ausClassArray[MCIMAX_CLASSES];
|
---|
82 | USHORT ausValidClassArray[MCIMAX_CLASSES][MCIMAX_CLASSES];
|
---|
83 | } MCI_MCIINSTALLDRV;
|
---|
84 | typedef MCI_MCIINSTALLDRV *PMCI_MCIINSTALLDRV;
|
---|
85 | #define MCI_MCIINSTALLDRV_ID 0x92325D4C
|
---|
86 |
|
---|
87 | typedef struct _MCI_MCIINSTALLCONNARRAY {
|
---|
88 | USHORT usConnectType;
|
---|
89 | CHAR szToInstallName[MCIMAX_DEVICENAMELENGTH];
|
---|
90 | USHORT usToConnectIndex;
|
---|
91 | } MCI_MCIINSTALLCONNARRAY;
|
---|
92 | typedef MCI_MCIINSTALLCONNARRAY *PMCI_MCIINSTALLCONNARRAY;
|
---|
93 |
|
---|
94 | typedef struct _MCI_MCIINSTALLCONN {
|
---|
95 | MINSTINIHEADER Header;
|
---|
96 | CHAR szInstallName[MCIMAX_DEVICENAMELENGTH];
|
---|
97 | USHORT usNumConnectors;
|
---|
98 | MCI_MCIINSTALLCONNARRAY ConnectorList[MCIMAX_CONNECTORS];
|
---|
99 | } MCI_MCIINSTALLCONN;
|
---|
100 | typedef MCI_MCIINSTALLCONN *PMCI_MCIINSTALLCONN;
|
---|
101 | #define MCI_MCIINSTALLCONN_ID 0x37AC2C3F
|
---|
102 |
|
---|
103 | typedef struct _MCI_MCIINSTALLPARM {
|
---|
104 | MINSTINIHEADER Header;
|
---|
105 | CHAR szInstallName[MCIMAX_DEVICENAMELENGTH];
|
---|
106 | CHAR szDevParams[MCIMAX_DEVPARAMSLENGTH];
|
---|
107 | } MCI_MCIINSTALLPARM;
|
---|
108 | typedef MCI_MCIINSTALLPARM *PMCI_MCIINSTALLPARM;
|
---|
109 | #define MCI_MCIINSTALLPARM_ID 0x00E0F5A3
|
---|
110 |
|
---|
111 | typedef struct _MCI_MCIINSTALLALIAS {
|
---|
112 | MINSTINIHEADER Header;
|
---|
113 | CHAR szInstallName[MCIMAX_DEVICENAMELENGTH];
|
---|
114 | CHAR szAliasName[MCIMAX_ALIASNAMELENGTH];
|
---|
115 | } MCI_MCIINSTALLALIAS;
|
---|
116 | typedef MCI_MCIINSTALLALIAS *PMCI_MCIINSTALLALIAS;
|
---|
117 | #define MCI_MCIINSTALLALIAS_ID 0x7C939816
|
---|
118 |
|
---|
119 | typedef struct _MCI_MCIINSTALLEXT {
|
---|
120 | MINSTINIHEADER Header;
|
---|
121 | CHAR szInstallName[MCIMAX_DEVICENAMELENGTH];
|
---|
122 | USHORT usNumExtensions;
|
---|
123 | CHAR szExtension[MCIMAX_EXTENSIONS][MCIMAX_EXTENSIONNAMELENGTH];
|
---|
124 | } MCI_MCIINSTALLEXT;
|
---|
125 | typedef MCI_MCIINSTALLEXT *PMCI_MCIINSTALLEXT;
|
---|
126 | #define MCI_MCIINSTALLEXT_ID 0x8711BEDD
|
---|
127 |
|
---|
128 | typedef struct _MCI_MCIINSTALLTYPES {
|
---|
129 | MINSTINIHEADER Header;
|
---|
130 | CHAR szInstallName[MCIMAX_DEVICENAMELENGTH];
|
---|
131 | CHAR szTypes[MCIMAX_TYPELISTLENGTH];
|
---|
132 | } MCI_MCIINSTALLTYPES;
|
---|
133 | typedef MCI_MCIINSTALLTYPES *PMCI_MCIINSTALLTYPES;
|
---|
134 | #define MCI_MCIINSTALLTYPES_ID 0xC4CF7AB2
|
---|
135 |
|
---|
136 | #define MMIOMAX_DLLLENGTH CCHMAXPATH
|
---|
137 | #define MMIOMAX_PROCNAMELENGTH 32
|
---|
138 | #define MMIOMAX_EXTENSIONNAMELENGTH 4
|
---|
139 | #define MMIOMAX_HWNAMELENGTH 32
|
---|
140 | #define MMIOMAX_CODECINFOLENGTH 8
|
---|
141 | #define MMIOMAX_SPECINFOLENGTH 32
|
---|
142 |
|
---|
143 | // MMIO_MMIOINSTALL -> MMINIFILEINFO
|
---|
144 | // MMIO_MMIOCODEC -> CODECINIFILEINFO
|
---|
145 |
|
---|
146 | typedef struct _MMIO_MMIOINSTALL {
|
---|
147 | MINSTINIHEADER Header;
|
---|
148 | ULONG fccIOProc;
|
---|
149 | CHAR szDLLName[MMIOMAX_DLLLENGTH];
|
---|
150 | CHAR szProcName[MMIOMAX_PROCNAMELENGTH];
|
---|
151 | ULONG dwFlags;
|
---|
152 | ULONG dwExtendLen;
|
---|
153 | ULONG dwMediaType;
|
---|
154 | ULONG dwIOProcType;
|
---|
155 | CHAR szDefExt[MMIOMAX_EXTENSIONNAMELENGTH];
|
---|
156 | } MMIO_MMIOINSTALL;
|
---|
157 | typedef MMIO_MMIOINSTALL *PMMIO_MMIOINSTALL;
|
---|
158 | #define MMIO_MMIOINSTALL_ID 0x12709014
|
---|
159 |
|
---|
160 | typedef struct _MMIO_MMIOCODEC {
|
---|
161 | MINSTINIHEADER Header;
|
---|
162 | ULONG ulStructLen;
|
---|
163 | ULONG fcc;
|
---|
164 | CHAR szDLLName[MMIOMAX_DLLLENGTH];
|
---|
165 | CHAR szProcName[MMIOMAX_PROCNAMELENGTH];
|
---|
166 | ULONG ulCompressType;
|
---|
167 | ULONG ulCompressSubType;
|
---|
168 | ULONG ulMediaType;
|
---|
169 | ULONG ulCapsFlags;
|
---|
170 | ULONG ulFlags;
|
---|
171 | CHAR szHWID[MMIOMAX_HWNAMELENGTH];
|
---|
172 | ULONG ulMaxSrcBufLen;
|
---|
173 | ULONG ulSyncMethod;
|
---|
174 | ULONG fccPreferredFormat;
|
---|
175 | ULONG ulXalignment;
|
---|
176 | ULONG ulYalignment;
|
---|
177 | CHAR szSpecInfo[MMIOMAX_SPECINFOLENGTH];
|
---|
178 | } MMIO_MMIOCODEC;
|
---|
179 | typedef MMIO_MMIOCODEC *PMMIO_MMIOCODEC;
|
---|
180 | #define MMIO_MMIOCODECDELETE_ID 0xA359F6F9
|
---|
181 | #define MMIO_MMIOCODEC1INSTALL_ID 0x75AE2FBC
|
---|
182 | #define MMIO_MMIOCODEC2INSTALL_ID 0xFB21285F
|
---|
183 |
|
---|
184 | typedef struct _PRF_PROFILEDATA {
|
---|
185 | MINSTINIHEADER Header;
|
---|
186 | CHAR Ini[MINSTMAX_PATHLENGTH];
|
---|
187 | CHAR AppName[MINSTMAX_STRLENGTH];
|
---|
188 | CHAR KeyName[MINSTMAX_STRLENGTH];
|
---|
189 | CHAR Dll[MINSTMAX_PATHLENGTH];
|
---|
190 | ULONG Id;
|
---|
191 | } PRF_PROFILEDATA;
|
---|
192 | typedef PRF_PROFILEDATA *PPRF_PROFILEDATA;
|
---|
193 | #define PRF_PROFILEDATA_ID 0xC339D14E
|
---|
194 |
|
---|
195 | typedef struct _PRF_PROFILESTRING {
|
---|
196 | MINSTINIHEADER Header;
|
---|
197 | CHAR Inis[MINSTMAX_PATHLENGTH];
|
---|
198 | CHAR AppNames[MINSTMAX_STRLENGTH];
|
---|
199 | CHAR KeyNames[MINSTMAX_STRLENGTH];
|
---|
200 | CHAR Datas[MINSTMAX_PATHLENGTH];
|
---|
201 | } PRF_PROFILESTRING;
|
---|
202 | typedef PRF_PROFILESTRING *PPRF_PROFILESTRING;
|
---|
203 | #define PRF_PROFILESTRING_ID 0xC51EC302
|
---|
204 |
|
---|
205 | typedef LHANDLE HPROGRAM;
|
---|
206 | typedef HPROGRAM *PHPROGRAM;
|
---|
207 | typedef LHANDLE HAPP;
|
---|
208 |
|
---|
209 | typedef LHANDLE HINI;
|
---|
210 | typedef HINI *PHINI;
|
---|
211 |
|
---|
212 | HINI APIENTRY PrfOpenProfile(HAB hab, PSZ pszFileName);
|
---|
213 | BOOL APIENTRY PrfCloseProfile(HINI hini);
|
---|
214 | BOOL APIENTRY PrfWriteProfileString(HINI hini, PSZ pszApp, PSZ pszKey, PSZ pszData);
|
---|
215 | BOOL APIENTRY PrfWriteProfileData(HINI hini, PSZ pszApp, PSZ pszKey, PVOID pData, ULONG cchDataLen);
|
---|
216 |
|
---|
217 | typedef struct _SPI_SPIINSTALL {
|
---|
218 | MINSTINIHEADER Header;
|
---|
219 | CHAR SpiDllName[MINSTMAX_PATHLENGTH];
|
---|
220 | } SPI_SPIINSTALL;
|
---|
221 | typedef SPI_SPIINSTALL *PSPI_SPIINSTALL;
|
---|
222 | #define SPI_SPIINSTALL_ID 0x78CA5190
|
---|
223 |
|
---|
224 | typedef struct _WPS_CREATEOBJECT { // Originally named WPS_WPOBJECT
|
---|
225 | MINSTINIHEADER Header;
|
---|
226 | CHAR WPClassName[MINSTMAX_STRLENGTH];
|
---|
227 | CHAR WPTitle[MINSTMAX_STRLENGTH];
|
---|
228 | CHAR WPSetupString[MINSTMAX_PATHLENGTH]; // No path but huge buffer
|
---|
229 | CHAR WPLocation[MINSTMAX_STRLENGTH];
|
---|
230 | ULONG WPFlags;
|
---|
231 | } WPS_CREATEOBJECT;
|
---|
232 | typedef WPS_CREATEOBJECT *PWPS_CREATEOBJECT;
|
---|
233 | #define WPS_CREATEOBJECT_ID 0xF08301C8
|
---|
234 |
|
---|
235 | typedef struct _WPS_DESTROYOBJECT {
|
---|
236 | MINSTINIHEADER Header;
|
---|
237 | CHAR WPDestroyObjectID[MINSTMAX_STRLENGTH];
|
---|
238 | } WPS_DESTROYOBJECT;
|
---|
239 | typedef WPS_DESTROYOBJECT *PWPS_DESTROYOBJECT;
|
---|
240 | #define WPS_DESTROYOBJECT_ID 0x92D45D84
|
---|
241 |
|
---|
242 | typedef struct _WPS_WPCLASS {
|
---|
243 | MINSTINIHEADER Header;
|
---|
244 | CHAR WPClassNameNew[MINSTMAX_STRLENGTH];
|
---|
245 | CHAR WPDllName[MINSTMAX_PATHLENGTH];
|
---|
246 | CHAR WPReplaceClass[MINSTMAX_STRLENGTH];
|
---|
247 | } WPS_WPCLASS;
|
---|
248 | typedef WPS_WPCLASS *PWPS_WPCLASS;
|
---|
249 | #define WPS_WPCLASS_ID 0xABAD2C82
|
---|
250 |
|
---|
251 | // Public variables...
|
---|
252 | MINSTINI_DEFENTRY MINSTINI_FuncList[];
|
---|
253 | MINSTINI_DEFENTRY MINSTINIWPS_WPObject[];
|
---|
254 |
|
---|
255 | #pragma pack()
|
---|