ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

kernel32.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.