source: trunk/stdcode/mciini.c

Last change on this file was 3, checked in by erdmann, 8 years ago

fixing 2 bugs in mmi_customdll.c, unpacking STDCODE.RAR into its own directory, removing all binaries (.obj, .exe) from repo

  • Property svn:eol-style set to native
File size: 11.2 KB
Line 
1
2// ù Ä ÄÄÄÄÍÍ = Ä ù Ä = ÍÍÄÄÄÄ Ä ù
3// ³ ³
4// ÜÛÛÛÛÛÛÛÜ ÜÛÜ ÜÛÛÛÛÛÛÛÛÜ ú úÄÄÄÍÄÄÍÄÍÍÄÄÍÍÍÍÄÍÍÍÍÍÍÍÍÍÎÄ
5// ³ ÛÛÛÛßßßÛÛÛÛ ÛÛÛÛÛ ÛÛÛß ßÛÛÛ ³ MINSTALL Front-End º
6// º ÛÛÛÛÜÜÜÛÛÛÛ ÛÛÛÛÛ ÛÛÛÜ ÜÛÛÛ º ú ÄÄÄÄÍÄÍÍÄÄÍÍÍÍÄÍÍÍÍÍÍÍÍÄÍÍÍÍÍÎÄ
7// º ÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛß º Section: MMOS/2 for eCS º
8// º ÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛ ßÛÛÛÛÜ º ³ Created: 28/10/02 º
9// ³ ßÛÛß ßÛÛß ßÛß ßÛÛß ßÛÛß ³ ³ Last Modified: ³
10// ÜÜÜ ³ Number Of Modifications: 000 ³
11// ù ÜÛÛß ù ³ INCs required: *none* ³
12// ÄÄÄÄÄÄÄ ÜÛÛß º Written By: Martin Kiewitz ³
13// ³ Ú¿Ú¿³ÜÛÛÛÜÜÛÛÛÜ ³ º (c) Copyright by ³
14// º ÀÙ³ÀÙßÛÛÛßßÜÛÛß º º AiR ON-Line Software '02 ú
15// º ÄÄÄÄÄÄÄ ÜÛÛÝ º º All rights reserved.
16// º ÜÛÛÛÄÄÄÄÄÄÄÄÄ º ÄÎÍÍÍÄÍÍÍÍÍÄÍÍÍÍÄÍÍÄÄÍÄÄÍÄÄÄúÄÄ ú
17// º ÜÛÛÛݳ ³Ú¿³³Ä º
18// ³ ÜÛÛÛÛ Àij³ÀÙ³Ä ³
19// ßÛÛÛÛÝÄÄÄÄÄÄÄÄÄÄ
20// ³ ßß ³
21// ù ÄŽ-=’iç éï-Liïî SéŸâW’çî=-ÃÄÄ ù
22
23#define INCL_NOPMAPI
24#define INCL_BASE
25#define INCL_DOSMODULEMGR
26#define INCL_OS2MM
27#include <os2.h>
28#include <os2me.h>
29
30#include <global.h>
31#include <mciini.h>
32
33CODE_MCISENDCOMMAND MCIINI_MciSendCommandFunc = 0;
34
35APIRET MCIINI_SendSysInfoExtCommand (ULONG FunctionID, PVOID SysInfoParm) {
36 MCI_SYSINFO_PARMS SysInfo;
37
38 memset (&SysInfo, 0, sizeof(SysInfo));
39 SysInfo.ulItem = FunctionID;
40 SysInfo.pSysInfoParm = SysInfoParm;
41 return (*MCIINI_MciSendCommandFunc) (0, MCI_SYSINFO, MCI_SYSINFO_ITEM|MCI_WAIT, (PVOID)&SysInfo, 0);
42 }
43
44APIRET MCIINI_CreateDriver (PSZ DeviceName, USHORT DeviceType, ULONG DeviceFlags, PSZ VersionNo, PSZ ProductInfo, PSZ MCDDriver, PSZ VSDDriver, PSZ PDDName, PSZ MCDTable, PSZ VSDTable, USHORT ShareType, PSZ ResourceName, USHORT ResourceUnits, USHORT ClassesCount, PUSHORT ClassArray, PUSHORT ClassComboArray) {
45 MCI_SYSINFO_LOGDEVICE AddDriver;
46
47 memset (&AddDriver, 0, sizeof(AddDriver));
48 strncpy (AddDriver.szInstallName, DeviceName, MAX_DEVICE_NAME);
49 AddDriver.usDeviceType = DeviceType;
50 AddDriver.ulDeviceFlag = DeviceFlags;
51 strncpy (AddDriver.szVersionNumber, VersionNo, MAX_VERSION_NUMBER);
52 strncpy (AddDriver.szProductInfo, ProductInfo, MAX_PRODINFO);
53 strncpy (AddDriver.szMCDDriver, MCDDriver, MAX_DEVICE_NAME);
54 strncpy (AddDriver.szVSDDriver, VSDDriver, MAX_DEVICE_NAME);
55 strncpy (AddDriver.szPDDName, PDDName, MAX_PDD_NAME);
56 strncpy (AddDriver.szMCDTable, MCDTable, MAX_DEVICE_NAME);
57 strncpy (AddDriver.szVSDTable, VSDTable, MAX_DEVICE_NAME);
58 AddDriver.usShareType = ShareType;
59 strncpy (AddDriver.szResourceName, ResourceName, MAX_DEVICE_NAME);
60 AddDriver.usResourceUnits = ResourceUnits;
61 AddDriver.usResourceClasses = ClassesCount;
62 memcpy (&AddDriver.ausClassArray, ClassArray, sizeof(USHORT)*ClassesCount);
63 memcpy (&AddDriver.ausValidClassArray, ClassComboArray, sizeof(USHORT)*10*10); // ClassesCount*ClassesCount);
64 return MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_INSTALL_DRIVER, &AddDriver);
65 }
66
67APIRET MCIINI_DeleteDriver (PSZ DeviceName) {
68 MCI_SYSINFO_LOGDEVICE DelDriver;
69
70 memset (&DelDriver, 0, sizeof(DelDriver));
71 strncpy (DelDriver.szInstallName, DeviceName, MAX_DEVICE_NAME);
72 return MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_DELETE_DRIVER, &DelDriver);
73 }
74
75APIRET MCIINI_GetDeviceParameters (PSZ DestPtr, ULONG DestMaxLen, PSZ DeviceName) {
76 MCI_SYSINFO_DEVPARAMS GetDevParms;
77 APIRET rc;
78
79 if (DestMaxLen==0) return FALSE;
80 memset (&GetDevParms, 0, sizeof(GetDevParms));
81 memset (DestPtr, 0, DestMaxLen);
82 strncpy (GetDevParms.szInstallName, DeviceName, MAX_DEVICE_NAME);
83 if ((rc = MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_QUERY_PARAMS, &GetDevParms))==0) {
84 strncpy (DestPtr, GetDevParms.szDevParams, DestMaxLen);
85 }
86 return rc;
87 }
88
89APIRET MCIINI_SetDeviceParameters (PSZ DeviceName, PSZ DeviceParameters) {
90 MCI_SYSINFO_DEVPARAMS SetDevParms;
91
92 memset (&SetDevParms, 0, sizeof(SetDevParms));
93 strncpy (SetDevParms.szInstallName, DeviceName, MAX_DEVICE_NAME);
94 strncpy (SetDevParms.szDevParams, DeviceParameters, MAX_DEV_PARAMS);
95 return MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_SET_PARAMS, &SetDevParms);
96 }
97
98USHORT MCIINI_GetConnectors (PUSHORT ConnectorTypeArrayPtr, PCHAR ToInstallNameArrayPtr, PUSHORT ToConnectIndexArrayPtr, USHORT MaxCount, PSZ DeviceName) {
99 MCI_SYSINFO_CONPARAMS GetConnectors;
100 USHORT CurConnector;
101 PCONNECT CurConnectorPtr;
102
103 if (MaxCount==0) return FALSE;
104 memset (&GetConnectors, 0, sizeof(GetConnectors));
105 strncpy (GetConnectors.szInstallName, DeviceName, MAX_DEVICE_NAME);
106 if ((MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_QUERY_CONNECTORS, &GetConnectors))==0) {
107 if (MaxCount>GetConnectors.usNumConnectors)
108 MaxCount = GetConnectors.usNumConnectors;
109
110 CurConnectorPtr = &GetConnectors.ConnectorList[0];
111 for (CurConnector=0; CurConnector<MaxCount; CurConnector++) {
112 *ConnectorTypeArrayPtr = CurConnectorPtr->usConnectType;
113 memcpy (ToInstallNameArrayPtr, &CurConnectorPtr->szToInstallName, MAX_DEVICE_NAME);
114 *ToConnectIndexArrayPtr = CurConnectorPtr->usToConnectIndex;
115 CurConnectorPtr++;
116 ConnectorTypeArrayPtr++; ToConnectIndexArrayPtr++;
117 ToInstallNameArrayPtr += MAX_DEVICE_NAME;
118 }
119 return GetConnectors.usNumConnectors;
120 }
121 return 0;
122
123 }
124
125APIRET MCIINI_SetConnectors (PSZ DeviceName, USHORT ConnectorCount, PUSHORT ConnectorTypeArrayPtr, PCHAR ToInstallNameArrayPtr, PUSHORT ToConnectIndexArrayPtr) {
126 MCI_SYSINFO_CONPARAMS SetConnectors;
127 USHORT CurConnector;
128 PCONNECT CurConnectorPtr;
129 APIRET rc;
130
131 memset (&SetConnectors, 0, sizeof(SetConnectors));
132 strncpy (SetConnectors.szInstallName, DeviceName, MAX_DEVICE_NAME);
133 SetConnectors.usNumConnectors = ConnectorCount;
134
135 if (ConnectorCount>MAX_CONNECTORS) ConnectorCount = MAX_CONNECTORS;
136 // Copy all connectors from 3 arrays into one...
137 CurConnectorPtr = &SetConnectors.ConnectorList[0];
138 for (CurConnector=0; CurConnector<ConnectorCount; CurConnector++) {
139 CurConnectorPtr->usConnectType = *ConnectorTypeArrayPtr;
140 memcpy (&CurConnectorPtr->szToInstallName, ToInstallNameArrayPtr, MAX_DEVICE_NAME);
141 CurConnectorPtr->usToConnectIndex = *ToConnectIndexArrayPtr;
142 CurConnectorPtr++;
143 ConnectorTypeArrayPtr++; ToConnectIndexArrayPtr++;
144 ToInstallNameArrayPtr += MAX_DEVICE_NAME;
145 }
146
147 return MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_SET_CONNECTORS, &SetConnectors);
148 }
149
150USHORT MCIINI_GetFileExtensions (PCHAR ExtensionArrayPtr, USHORT MaxCount, PSZ DeviceName) {
151 MCI_SYSINFO_EXTENSION GetExtensions;
152
153 if (MaxCount==0) return FALSE;
154 memset (&GetExtensions, 0, sizeof(GetExtensions));
155 strncpy (GetExtensions.szInstallName, DeviceName, MAX_DEVICE_NAME);
156 if ((MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_QUERY_EXTENSIONS, &GetExtensions))==0) {
157 if (MaxCount>GetExtensions.usNumExtensions)
158 MaxCount = GetExtensions.usNumExtensions;
159 memcpy (ExtensionArrayPtr, GetExtensions.szExtension, MaxCount*MAX_EXTENSION_NAME);
160 return GetExtensions.usNumExtensions;
161 }
162 return 0;
163 }
164
165APIRET MCIINI_SetFileExtensions (PSZ DeviceName, USHORT ExtensionCount, PCHAR ExtensionArrayPtr) {
166 MCI_SYSINFO_EXTENSION SetExtensions;
167
168 memset (SetExtensions.szExtension, 0, sizeof(SetExtensions.szExtension));
169
170 strncpy (SetExtensions.szInstallName, DeviceName, MAX_DEVICE_NAME);
171 if (ExtensionCount>MAX_EXTENSIONS) ExtensionCount = MAX_EXTENSIONS;
172 SetExtensions.usNumExtensions = ExtensionCount;
173 memcpy (SetExtensions.szExtension, ExtensionArrayPtr, ExtensionCount*MAX_EXTENSION_NAME);
174 return MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_SET_EXTENSIONS, &SetExtensions);
175 }
176
177APIRET MCIINI_GetAliasName (PSZ DestPtr, ULONG DestMaxLen, PSZ DeviceName) {
178 MCI_SYSINFO_QUERY_NAME GetAlias;
179 APIRET rc;
180
181 if (DestMaxLen==0) return FALSE;
182 memset (&GetAlias, 0, sizeof(GetAlias));
183 memset (DestPtr, 0, DestMaxLen);
184 strncpy (GetAlias.szInstallName, DeviceName, MAX_DEVICE_NAME);
185 if ((rc = MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_QUERY_NAMES, &GetAlias))==0) {
186 strncpy (DestPtr, GetAlias.szAliasName, DestMaxLen);
187 }
188 return rc;
189 }
190
191APIRET MCIINI_SetAliasName (PSZ DeviceName, PSZ AliasName) {
192 MCI_SYSINFO_ALIAS SetAlias;
193
194 memset (&SetAlias, 0, sizeof(SetAlias));
195 strncpy (SetAlias.szInstallName, DeviceName, MAX_DEVICE_NAME);
196 strncpy (SetAlias.szAliasName, AliasName, MAX_ALIAS_NAME);
197 return MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_SET_ALIAS, &SetAlias);
198 }
199
200APIRET MCIINI_GetEATypes (PSZ DestPtr, ULONG DestMaxLen, PSZ DeviceName) {
201 MCI_SYSINFO_TYPES GetEATypes;
202 APIRET rc;
203
204 if (DestMaxLen==0) return FALSE;
205 memset (&GetEATypes, 0, sizeof(GetEATypes));
206 memset (DestPtr, 0, DestMaxLen);
207 strncpy (GetEATypes.szInstallName, DeviceName, MAX_DEVICE_NAME);
208 if ((rc = MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_QUERY_TYPES, &GetEATypes))==0) {
209 strncpy (DestPtr, GetEATypes.szTypes, DestMaxLen);
210 }
211 return rc;
212 }
213
214APIRET MCIINI_SetEATypes (PSZ DeviceName, PSZ EATypes) {
215 MCI_SYSINFO_TYPES SetEATypes;
216
217 memset (&SetEATypes, 0, sizeof(SetEATypes));
218 strncpy (SetEATypes.szInstallName, DeviceName, MAX_DEVICE_NAME);
219 strncpy (SetEATypes.szTypes, EATypes, MAX_TYPEBUFFER);
220 return MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_SET_TYPES, &SetEATypes);
221 }
222
223APIRET MCIINI_GetDefaultDevice (PSZ DestPtr, ULONG DestMaxLen, USHORT DeviceType) {
224 MCI_SYSINFO_DEFAULTDEVICE GetDefaultDevice;
225 APIRET rc;
226
227 memset (&GetDefaultDevice, 0, sizeof(GetDefaultDevice));
228 GetDefaultDevice.usDeviceType = DeviceType;
229 if ((rc = MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_QUERY_DEFAULT, &GetDefaultDevice))==0) {
230 strncpy (DestPtr, GetDefaultDevice.szInstallName, DestMaxLen);
231 }
232 return rc;
233 }
234
235APIRET MCIINI_SetDefaultDevice (USHORT DeviceType, PSZ DeviceName) {
236 MCI_SYSINFO_DEFAULTDEVICE SetDefaultDevice;
237 memset (&SetDefaultDevice, 0, sizeof(SetDefaultDevice));
238 strncpy (SetDefaultDevice.szInstallName, DeviceName, MAX_DEVICE_NAME);
239 SetDefaultDevice.usDeviceType = DeviceType;
240 return MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_SET_DEFAULT, &SetDefaultDevice);
241 }
242
243USHORT MCIINI_GetDeviceOrdinal (PSZ DeviceName) {
244 MCI_SYSINFO_QUERY_NAME QueryName;
245 APIRET rc;
246
247 memset (&QueryName, 0, sizeof(QueryName));
248 strncpy (QueryName.szInstallName, DeviceName, MAX_DEVICE_NAME);
249 if (!MCIINI_SendSysInfoExtCommand(MCI_SYSINFO_QUERY_NAMES, &QueryName))
250 return 0; // if any error occured...
251 return QueryName.usDeviceOrd;
252 }
253
254USHORT MCIINI_GetTotalDevices (USHORT DeviceType) {
255 MCI_SYSINFO_PARMS SysInfo;
256 CHAR ReturnBuffer[4];
257
258 memset (&SysInfo, 0, sizeof(SysInfo));
259 memset (&ReturnBuffer, 0, sizeof(ReturnBuffer));
260 SysInfo.pszReturn = ReturnBuffer;
261 SysInfo.ulRetSize = 3;
262 SysInfo.usDeviceType = DeviceType;
263 if ((*MCIINI_MciSendCommandFunc) (0, MCI_SYSINFO, MCI_TO_BUFFER, (PVOID)&SysInfo, 0))
264 return 0; // Error during MCI-Command...
265 return atoi(ReturnBuffer);
266 }
Note: See TracBrowser for help on using the repository browser.