Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenkernel32.h
Go to the documentation of this file.
00001 #pragma once 00002 00003 // 00004 // Kernel32 Filter IDs 00005 // 00006 #define kernel32file 200 00007 #define kernel32ver 201 00008 #define actctx 202 00009 #define resource 203 00010 #define kernel32session 204 00011 00012 00013 #if DBG 00014 #define DEBUG_CHANNEL(ch) static ULONG gDebugChannel = ch; 00015 #else 00016 #define DEBUG_CHANNEL(ch) 00017 #endif 00018 00019 #define TRACE(fmt, ...) TRACE__(gDebugChannel, fmt, ##__VA_ARGS__) 00020 #define WARN(fmt, ...) WARN__(gDebugChannel, fmt, ##__VA_ARGS__) 00021 #define FIXME(fmt, ...) WARN__(gDebugChannel, fmt,## __VA_ARGS__) 00022 #define ERR(fmt, ...) ERR__(gDebugChannel, fmt, ##__VA_ARGS__) 00023 00024 #define STUB \ 00025 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); \ 00026 DPRINT1("%s() is UNIMPLEMENTED!\n", __FUNCTION__) 00027 00028 #define debugstr_a 00029 #define debugstr_w 00030 #define wine_dbgstr_w 00031 #define debugstr_guid 00032 00033 #include "wine/unicode.h" 00034 #include "baseheap.h" 00035 00036 #define BINARY_UNKNOWN (0) 00037 #define BINARY_PE_EXE32 (1) 00038 #define BINARY_PE_DLL32 (2) 00039 #define BINARY_PE_EXE64 (3) 00040 #define BINARY_PE_DLL64 (4) 00041 #define BINARY_WIN16 (5) 00042 #define BINARY_OS216 (6) 00043 #define BINARY_DOS (7) 00044 #define BINARY_UNIX_EXE (8) 00045 #define BINARY_UNIX_LIB (9) 00046 00047 #define MAGIC(c1,c2,c3,c4) ((c1) + ((c2)<<8) + ((c3)<<16) + ((c4)<<24)) 00048 00049 #define MAGIC_HEAP MAGIC( 'H','E','A','P' ) 00050 00051 #define ROUNDUP(a,b) ((((a)+(b)-1)/(b))*(b)) 00052 #define ROUNDDOWN(a,b) (((a)/(b))*(b)) 00053 00054 #define ROUND_DOWN(n, align) \ 00055 (((ULONG)n) & ~((align) - 1l)) 00056 00057 #define ROUND_UP(n, align) \ 00058 ROUND_DOWN(((ULONG)n) + (align) - 1, (align)) 00059 00060 #ifndef FIELD_OFFSET 00061 #define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld)) 00062 #endif 00063 00064 #define IsConsoleHandle(h) \ 00065 (((((ULONG_PTR)h) & 0x10000003) == 0x3) ? TRUE : FALSE) 00066 00067 #define HANDLE_DETACHED_PROCESS (HANDLE)-2 00068 #define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3 00069 #define HANDLE_CREATE_NO_WINDOW (HANDLE)-4 00070 00071 // 00072 // This stuff maybe should go in a vdm.h? 00073 // 00074 typedef enum _VDM_ENTRY_CODE 00075 { 00076 VdmEntryUndo, 00077 VdmEntryUpdateProcess, 00078 VdmEntryUpdateControlCHandler 00079 } VDM_ENTRY_CODE; 00080 00081 // 00082 // Undo States 00083 // 00084 #define VDM_UNDO_PARTIAL 0x01 00085 #define VDM_UNDO_FULL 0x02 00086 #define VDM_UNDO_REUSE 0x04 00087 #define VDM_UNDO_COMPLETED 0x08 00088 00089 // 00090 // Binary Types to share with VDM 00091 // 00092 #define BINARY_TYPE_EXE 0x01 00093 #define BINARY_TYPE_COM 0x02 00094 #define BINARY_TYPE_PIF 0x03 00095 #define BINARY_TYPE_DOS 0x10 00096 #define BINARY_TYPE_SEPARATE_WOW 0x20 00097 #define BINARY_TYPE_WOW 0x40 00098 #define BINARY_TYPE_WOW_EX 0x80 00099 00100 // 00101 // VDM States 00102 // 00103 #define VDM_NOT_LOADED 0x01 00104 #define VDM_NOT_READY 0x02 00105 #define VDM_READY 0x04 00106 00107 /* Undocumented CreateProcess flag */ 00108 #define STARTF_SHELLPRIVATE 0x400 00109 00110 typedef struct _CODEPAGE_ENTRY 00111 { 00112 LIST_ENTRY Entry; 00113 UINT CodePage; 00114 HANDLE SectionHandle; 00115 PBYTE SectionMapping; 00116 CPTABLEINFO CodePageTable; 00117 } CODEPAGE_ENTRY, *PCODEPAGE_ENTRY; 00118 00119 typedef struct tagLOADPARMS32 { 00120 LPSTR lpEnvAddress; 00121 LPSTR lpCmdLine; 00122 WORD wMagicValue; 00123 WORD wCmdShow; 00124 DWORD dwReserved; 00125 } LOADPARMS32; 00126 00127 typedef enum _BASE_SEARCH_PATH_TYPE 00128 { 00129 BaseSearchPathInvalid, 00130 BaseSearchPathDll, 00131 BaseSearchPathApp, 00132 BaseSearchPathDefault, 00133 BaseSearchPathEnv, 00134 BaseSearchPathCurrent, 00135 BaseSearchPathMax 00136 } BASE_SEARCH_PATH_TYPE, *PBASE_SEARCH_PATH_TYPE; 00137 00138 typedef enum _BASE_CURRENT_DIR_PLACEMENT 00139 { 00140 BaseCurrentDirPlacementInvalid = -1, 00141 BaseCurrentDirPlacementDefault, 00142 BaseCurrentDirPlacementSafe, 00143 BaseCurrentDirPlacementMax 00144 } BASE_CURRENT_DIR_PLACEMENT; 00145 00146 typedef struct _BASEP_ACTCTX_BLOCK 00147 { 00148 ULONG Flags; 00149 PVOID ActivationContext; 00150 PVOID CompletionContext; 00151 LPOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine; 00152 } BASEP_ACTCTX_BLOCK, *PBASEP_ACTCTX_BLOCK; 00153 00154 #define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_ERROR 1 00155 #define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_SUCCESS 2 00156 #define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_CONTINUE 3 00157 00158 00159 extern PBASE_STATIC_SERVER_DATA BaseStaticServerData; 00160 00161 typedef 00162 DWORD 00163 (*WaitForInputIdleType)( 00164 HANDLE hProcess, 00165 DWORD dwMilliseconds); 00166 00167 00168 extern BOOLEAN InWindows; 00169 extern WaitForInputIdleType UserWaitForInputIdleRoutine; 00170 00171 /* GLOBAL VARIABLES **********************************************************/ 00172 00173 extern BOOL bIsFileApiAnsi; 00174 extern HMODULE hCurrentModule; 00175 00176 extern RTL_CRITICAL_SECTION BaseDllDirectoryLock; 00177 00178 extern UNICODE_STRING BaseDllDirectory; 00179 extern UNICODE_STRING BaseDefaultPath; 00180 extern UNICODE_STRING BaseDefaultPathAppend; 00181 extern PLDR_DATA_TABLE_ENTRY BasepExeLdrEntry; 00182 00183 extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter; 00184 00185 extern SYSTEM_BASIC_INFORMATION BaseCachedSysInfo; 00186 00187 extern BOOLEAN BaseRunningInServerProcess; 00188 00189 /* FUNCTION PROTOTYPES *******************************************************/ 00190 00191 VOID 00192 NTAPI 00193 BaseDllInitializeMemoryManager(VOID); 00194 00195 BOOL WINAPI VerifyConsoleIoHandle(HANDLE Handle); 00196 00197 BOOL WINAPI CloseConsoleHandle(HANDLE Handle); 00198 00199 HANDLE WINAPI 00200 GetConsoleInputWaitHandle (VOID); 00201 00202 HANDLE WINAPI OpenConsoleW (LPCWSTR wsName, 00203 DWORD dwDesiredAccess, 00204 BOOL bInheritHandle, 00205 DWORD dwShareMode); 00206 00207 BOOL WINAPI SetConsoleInputExeNameW(LPCWSTR lpInputExeName); 00208 00209 PTEB GetTeb(VOID); 00210 00211 HANDLE FASTCALL TranslateStdHandle(HANDLE hHandle); 00212 00213 PWCHAR FilenameA2W(LPCSTR NameA, BOOL alloc); 00214 DWORD FilenameW2A_N(LPSTR dest, INT destlen, LPCWSTR src, INT srclen); 00215 00216 DWORD FilenameW2A_FitOrFail(LPSTR DestA, INT destLen, LPCWSTR SourceW, INT sourceLen); 00217 DWORD FilenameU2A_FitOrFail(LPSTR DestA, INT destLen, PUNICODE_STRING SourceU); 00218 00219 #define HeapAlloc RtlAllocateHeap 00220 #define HeapReAlloc RtlReAllocateHeap 00221 #define HeapFree RtlFreeHeap 00222 #define _lread (_readfun)_hread 00223 00224 PLARGE_INTEGER 00225 WINAPI 00226 BaseFormatTimeOut(OUT PLARGE_INTEGER Timeout, 00227 IN DWORD dwMilliseconds); 00228 00229 POBJECT_ATTRIBUTES 00230 WINAPI 00231 BaseFormatObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes, 00232 IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL, 00233 IN PUNICODE_STRING ObjectName); 00234 00235 NTSTATUS 00236 WINAPI 00237 BaseCreateStack(HANDLE hProcess, 00238 SIZE_T StackReserve, 00239 SIZE_T StackCommit, 00240 PINITIAL_TEB InitialTeb); 00241 00242 VOID 00243 WINAPI 00244 BaseInitializeContext(IN PCONTEXT Context, 00245 IN PVOID Parameter, 00246 IN PVOID StartAddress, 00247 IN PVOID StackAddress, 00248 IN ULONG ContextType); 00249 00250 VOID 00251 WINAPI 00252 BaseThreadStartupThunk(VOID); 00253 00254 VOID 00255 WINAPI 00256 BaseProcessStartThunk(VOID); 00257 00258 VOID 00259 NTAPI 00260 BasepFreeActivationContextActivationBlock( 00261 IN PBASEP_ACTCTX_BLOCK ActivationBlock 00262 ); 00263 00264 NTSTATUS 00265 NTAPI 00266 BasepAllocateActivationContextActivationBlock( 00267 IN DWORD Flags, 00268 IN PVOID CompletionRoutine, 00269 IN PVOID CompletionContext, 00270 OUT PBASEP_ACTCTX_BLOCK *ActivationBlock 00271 ); 00272 00273 __declspec(noreturn) 00274 VOID 00275 WINAPI 00276 BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress, 00277 LPVOID lpParameter); 00278 00279 VOID 00280 WINAPI 00281 BaseFreeThreadStack(IN HANDLE hProcess, 00282 IN PINITIAL_TEB InitialTeb); 00283 00284 __declspec(noreturn) 00285 VOID 00286 WINAPI 00287 BaseFiberStartup(VOID); 00288 00289 typedef UINT (WINAPI *PPROCESS_START_ROUTINE)(VOID); 00290 00291 VOID 00292 WINAPI 00293 BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress); 00294 00295 PVOID 00296 WINAPI 00297 BasepIsRealtimeAllowed(IN BOOLEAN Keep); 00298 00299 VOID 00300 WINAPI 00301 BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString, 00302 OUT LPWSTR* UnicodeString); 00303 00304 PUNICODE_STRING 00305 WINAPI 00306 Basep8BitStringToStaticUnicodeString(IN LPCSTR AnsiString); 00307 00308 BOOLEAN 00309 WINAPI 00310 Basep8BitStringToDynamicUnicodeString(OUT PUNICODE_STRING UnicodeString, 00311 IN LPCSTR String); 00312 00313 typedef NTSTATUS (NTAPI *PRTL_CONVERT_STRING)(IN PUNICODE_STRING UnicodeString, 00314 IN PANSI_STRING AnsiString, 00315 IN BOOLEAN AllocateMemory); 00316 00317 typedef ULONG (NTAPI *PRTL_COUNT_STRING)(IN PUNICODE_STRING UnicodeString); 00318 00319 typedef NTSTATUS (NTAPI *PRTL_CONVERT_STRINGA)(IN PANSI_STRING AnsiString, 00320 IN PCUNICODE_STRING UnicodeString, 00321 IN BOOLEAN AllocateMemory); 00322 00323 typedef ULONG (NTAPI *PRTL_COUNT_STRINGA)(IN PANSI_STRING UnicodeString); 00324 00325 ULONG 00326 NTAPI 00327 BasepUnicodeStringToAnsiSize(IN PUNICODE_STRING String); 00328 00329 ULONG 00330 NTAPI 00331 BasepAnsiStringToUnicodeSize(IN PANSI_STRING String); 00332 00333 extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString; 00334 extern PRTL_CONVERT_STRINGA BasepUnicodeStringTo8BitString; 00335 extern PRTL_COUNT_STRING BasepUnicodeStringTo8BitSize; 00336 extern PRTL_COUNT_STRINGA Basep8BitStringToUnicodeSize; 00337 00338 extern UNICODE_STRING BaseWindowsDirectory, BaseWindowsSystemDirectory; 00339 extern HANDLE BaseNamedObjectDirectory; 00340 00341 HANDLE 00342 WINAPI 00343 BaseGetNamedObjectDirectory(VOID); 00344 00345 NTSTATUS 00346 WINAPI 00347 BasepMapFile(IN LPCWSTR lpApplicationName, 00348 OUT PHANDLE hSection, 00349 IN PUNICODE_STRING ApplicationName); 00350 00351 PCODEPAGE_ENTRY FASTCALL 00352 IntGetCodePageEntry(UINT CodePage); 00353 00354 LPWSTR 00355 WINAPI 00356 BaseComputeProcessDllPath( 00357 IN LPWSTR FullPath, 00358 IN PVOID Environment 00359 ); 00360 00361 LPWSTR 00362 WINAPI 00363 BaseComputeProcessExePath( 00364 IN LPWSTR FullPath 00365 ); 00366 00367 ULONG 00368 WINAPI 00369 BaseIsDosApplication( 00370 IN PUNICODE_STRING PathName, 00371 IN NTSTATUS Status 00372 ); 00373 00374 NTSTATUS 00375 WINAPI 00376 BasepCheckBadapp( 00377 IN HANDLE FileHandle, 00378 IN PWCHAR ApplicationName, 00379 IN PWCHAR Environment, 00380 IN USHORT ExeType, 00381 IN PVOID* SdbQueryAppCompatData, 00382 IN PULONG SdbQueryAppCompatDataSize, 00383 IN PVOID* SxsData, 00384 IN PULONG SxsDataSize, 00385 OUT PULONG FusionFlags 00386 ); 00387 00388 BOOLEAN 00389 WINAPI 00390 IsShimInfrastructureDisabled( 00391 VOID 00392 ); 00393 00394 BOOL 00395 NTAPI 00396 BaseDestroyVDMEnvironment( 00397 IN PANSI_STRING AnsiEnv, 00398 IN PUNICODE_STRING UnicodeEnv 00399 ); 00400 00401 BOOL 00402 WINAPI 00403 BaseGetVdmConfigInfo( 00404 IN LPCWSTR Reserved, 00405 IN ULONG DosSeqId, 00406 IN ULONG BinaryType, 00407 IN PUNICODE_STRING CmdLineString, 00408 OUT PULONG VdmSize 00409 ); 00410 00411 BOOL 00412 NTAPI 00413 BaseCreateVDMEnvironment( 00414 IN PWCHAR lpEnvironment, 00415 IN PANSI_STRING AnsiEnv, 00416 IN PUNICODE_STRING UnicodeEnv 00417 ); 00418 00419 VOID 00420 WINAPI 00421 InitCommandLines(VOID); 00422 00423 VOID 00424 WINAPI 00425 BaseSetLastNTError(IN NTSTATUS Status); 00426 00427 /* FIXME */ 00428 WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *); 00429 00430 HANDLE 00431 WINAPI 00432 DuplicateConsoleHandle(HANDLE hConsole, 00433 DWORD dwDesiredAccess, 00434 BOOL bInheritHandle, 00435 DWORD dwOptions); 00436 00437 VOID 00438 NTAPI 00439 BasepLocateExeLdrEntry(IN PLDR_DATA_TABLE_ENTRY Entry, 00440 IN PVOID Context, 00441 OUT BOOLEAN *StopEnumeration); 00442 00443 typedef NTSTATUS 00444 (NTAPI *PBASEP_APPCERT_PLUGIN_FUNC)( 00445 IN PCHAR ApplicationName, 00446 IN ULONG CertFlag 00447 ); 00448 00449 typedef NTSTATUS 00450 (NTAPI *PBASEP_APPCERT_EMBEDDED_FUNC)( 00451 IN PCHAR ApplicationName 00452 ); 00453 00454 typedef NTSTATUS 00455 (NTAPI *PSAFER_REPLACE_PROCESS_THREAD_TOKENS)( 00456 IN HANDLE Token, 00457 IN HANDLE Process, 00458 IN HANDLE Thread 00459 ); 00460 00461 typedef struct _BASEP_APPCERT_ENTRY 00462 { 00463 LIST_ENTRY Entry; 00464 UNICODE_STRING Name; 00465 PBASEP_APPCERT_PLUGIN_FUNC fPluginCertFunc; 00466 } BASEP_APPCERT_ENTRY, *PBASEP_APPCERT_ENTRY; 00467 00468 typedef struct _BASE_MSG_SXS_HANDLES 00469 { 00470 HANDLE File; 00471 HANDLE Process; 00472 HANDLE Section; 00473 LARGE_INTEGER ViewBase; 00474 } BASE_MSG_SXS_HANDLES, *PBASE_MSG_SXS_HANDLES; 00475 00476 typedef struct _SXS_WIN32_NT_PATH_PAIR 00477 { 00478 PUNICODE_STRING Win32; 00479 PUNICODE_STRING Nt; 00480 } SXS_WIN32_NT_PATH_PAIR, *PSXS_WIN32_NT_PATH_PAIR; 00481 00482 typedef struct _SXS_OVERRIDE_MANIFEST 00483 { 00484 PCWCH Name; 00485 PVOID Address; 00486 ULONG Size; 00487 } SXS_OVERRIDE_MANIFEST, *PSXS_OVERRIDE_MANIFEST; 00488 00489 NTSTATUS 00490 NTAPI 00491 BasepConfigureAppCertDlls( 00492 IN PWSTR ValueName, 00493 IN ULONG ValueType, 00494 IN PVOID ValueData, 00495 IN ULONG ValueLength, 00496 IN PVOID Context, 00497 IN PVOID EntryContext 00498 ); 00499 00500 extern LIST_ENTRY BasepAppCertDllsList; 00501 extern RTL_CRITICAL_SECTION gcsAppCert; 00502 00503 BOOL 00504 WINAPI 00505 BaseUpdateVDMEntry( 00506 IN ULONG UpdateIndex, 00507 IN OUT PHANDLE WaitHandle, 00508 IN ULONG IndexInfo, 00509 IN ULONG BinaryType 00510 ); 00511 00512 VOID 00513 WINAPI 00514 BaseMarkFileForDelete( 00515 IN HANDLE FileHandle, 00516 IN ULONG FileAttributes 00517 ); 00518 00519 BOOL 00520 WINAPI 00521 BaseCheckForVDM( 00522 IN HANDLE ProcessHandle, 00523 OUT LPDWORD ExitCode 00524 ); 00525 00526 /* FIXME: This is EXPORTED! It should go in an external kernel32.h header */ 00527 VOID 00528 WINAPI 00529 BasepFreeAppCompatData( 00530 IN PVOID AppCompatData, 00531 IN PVOID AppCompatSxsData 00532 ); Generated on Sun May 27 2012 04:24:33 for ReactOS by
1.7.6.1
|