Reactos
1////////////////////////////////////////////////////////////////////
2// Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
3// All rights reserved
4// This file was released under the GPLv2 on June 2015.
5////////////////////////////////////////////////////////////////////
6
7/*************************************************************************
8*
9* File: user_lib.h
10*
11* Module: User-mode library header
12*
13* Description: common useful user-mode functions
14*
15* Author: Ivan
16*
17*************************************************************************/
18
19
20#ifndef __USER_LIB_H__
21#define __USER_LIB_H__
22
23#if defined DBG || defined PRINT_ALWAYS
24#define ODS(sz) OutputDebugString(sz)
25#else
26#define ODS(sz) {}
27#endif
28
29#define arraylen(a) (sizeof(a)/sizeof(a[0]))
30
31/// CD/DVD-RW device types
32typedef enum _JS_DEVICE_TYPE {
33 OTHER = 0,
34 CDR,
35 CDRW,
36 DVDROM,
37 DVDRAM,
38 DVDR,
39 DVDRW,
40 DVDPR,
41 DVDPRW,
42 DDCDROM,
43 DDCDR,
44 DDCDRW,
45 BDROM,
46 BDRE,
47 BUSY
48} JS_DEVICE_TYPE;
49
50extern TCHAR* MediaTypeStrings[];
51
52/// Service state constants
53typedef enum _JS_SERVICE_STATE {
54 JS_SERVICE_NOT_PRESENT, ///< Service not installed
55 JS_SERVICE_RUNNING, ///< Service is running
56 JS_SERVICE_NOT_RUNNING, ///< Service installed, but not running
57 JS_ERROR_STATUS ///< Errror while taking service status
58} JS_SERVICE_STATE;
59
60void * __cdecl mymemchr (
61 const void * buf,
62 int chr,
63 size_t cnt
64 );
65
66char * __cdecl mystrrchr (
67 const char * string,
68 int ch
69 );
70
71char * __cdecl mystrchr (
72 const char * string,
73 int ch
74 );
75
76int __cdecl Exist (
77 PCHAR path
78 );
79
80ULONG MyMessageBox(
81 HINSTANCE hInst,
82 HWND hWnd,
83 LPCSTR pszFormat,
84 LPCSTR pszTitle,
85 UINT fuStyle,
86 ...
87 );
88
89// simple win32 registry api wrappers
90BOOL RegisterString (LPSTR pszKey, LPSTR pszValue, LPSTR pszData,BOOLEAN MultiSz,DWORD size);
91BOOL
92GetRegString (
93 LPSTR pszKey,
94 LPSTR pszValue,
95 LPSTR pszData,
96 DWORD dwBufSize
97 );
98BOOL RegDelString (LPSTR pszKey, LPSTR pszValue);
99BOOL RegisterDword (LPSTR pszKey, LPSTR pszValue, DWORD dwData);
100BOOL
101GetRegUlong (
102 LPSTR pszKey,
103 LPSTR pszValue,
104 LPDWORD pszData
105 );
106
107
108JS_SERVICE_STATE
109ServiceInfo(
110 LPCTSTR ServiceName
111 );
112
113BOOL
114CheckCdrwFilter(
115 BOOL ReInstall
116 );
117
118BOOL
119Privilege(
120 LPTSTR pszPrivilege,
121 BOOL bEnable
122 );
123
124BOOL IsWow64(VOID);
125
126#define DW_GLOBAL_QUIT_EVENT_NAME L"Global\\DwQuitEvent"
127#define DW_QUIT_EVENT_NAME L"DwQuitEvent"
128
129HANDLE
130CreatePublicEvent(
131 PWCHAR EventName
132 );
133
134ULONG
135UDFPhSendIOCTL(
136 IN ULONG IoControlCode,
137 IN HANDLE DeviceObject,
138 IN PVOID InputBuffer ,
139 IN ULONG InputBufferLength,
140 OUT PVOID OutputBuffer ,
141 IN ULONG OutputBufferLength,
142 IN BOOLEAN OverrideVerify,
143 IN PVOID Dummy
144 );
145
146PCHAR
147UDFGetDeviceName(
148 PCHAR szDeviceName
149 );
150
151BOOL
152GetOptUlong(
153 PCHAR Path,
154 PCHAR OptName,
155 PULONG OptVal
156 );
157
158BOOL
159SetOptUlong(
160 PCHAR Path,
161 PCHAR OptName,
162 PULONG OptVal
163 );
164
165#define UDF_OPTION_GLOBAL 1
166#define UDF_OPTION_MEDIASPEC 10
167#define UDF_OPTION_DEVSPEC 2
168#define UDF_OPTION_DISKSPEC 3
169#define UDF_OPTION_MAX_DEPTH 0xffffffff
170
171ULONG
172UDFGetOptUlongInherited(
173 PCHAR Drive,
174 PCHAR OptName,
175 PULONG OptVal,
176 ULONG CheckDepth
177 );
178
179HANDLE
180OpenOurVolume(
181 PCHAR szDeviceName
182 );
183
184ULONG
185drv_letter_to_index(
186 WCHAR a
187 );
188
189DWORD
190WINAPI
191LauncherRoutine2(
192 LPVOID lpParameter
193 );
194
195#endif // __USER_LIB_H__