Changeset 1890 for trunk/include
- Timestamp:
- Nov 30, 1999, 8:38:24 PM (26 years ago)
- Location:
- trunk/include/win
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/win/ntddk.h
r31 r1890 1 /* $Id: ntddk.h,v 1.2 1999-06-01 21:57:25 phaller Exp $ */ 2 3 /* 4 this file defines interfaces mainly exposed to device drivers and 5 native nt dll's 1 /* $Id: ntddk.h,v 1.3 1999-11-30 19:38:23 sandervl Exp $ */ 2 /* 3 this file defines interfaces mainly exposed to device drivers and 4 native nt dll's 6 5 7 6 */ … … 9 8 #define __WINE_NTDDK_H 10 9 11 #include <ntdef.h>12 #include <winnt.h>13 #include "winbase.h" 10 #include "ntdef.h" 11 #include "winnt.h" 12 #include "winbase.h" /* fixme: should be taken out sometimes */ 14 13 15 14 #ifdef __cplusplus … … 17 16 #endif 18 17 19 /****************** 20 * asynchronous I/O 21 */ 22 #undef Status /* conflict with X11-includes*/ 23 24 typedef struct _IO_STATUS_BLOCK 25 { union 26 { NTSTATUS Status; 27 PVOID Pointer; 28 } u; 29 ULONG_PTR Information; 30 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; 31 32 typedef VOID (NTAPI IO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved ); 33 typedef IO_APC_ROUTINE *PIO_APIO_APC_ROUTINE; 34 18 /****************** 19 * asynchronous I/O 20 */ 21 #undef Status /* conflict with X11-includes*/ 22 23 typedef struct _IO_STATUS_BLOCK 24 { 25 union { 26 NTSTATUS Status; 27 PVOID Pointer; 28 } DUMMYUNIONNAME; 29 ULONG_PTR Information; 30 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; 31 32 typedef VOID (NTAPI *PIO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved ); 35 33 36 34 typedef enum _KEY_INFORMATION_CLASS { 37 38 39 35 KeyBasicInformation, 36 KeyNodeInformation, 37 KeyFullInformation 40 38 } KEY_INFORMATION_CLASS; 41 39 42 40 typedef enum _KEY_VALUE_INFORMATION_CLASS { 43 44 45 46 47 41 KeyValueBasicInformation, 42 KeyValueFullInformation, 43 KeyValuePartialInformation, 44 KeyValueFullInformationAlign64, 45 KeyValuePartialInformationAlign64 48 46 } KEY_VALUE_INFORMATION_CLASS; 49 47 50 typedef enum _THREADINFOCLASS 51 { 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 48 typedef enum _THREADINFOCLASS 49 { ThreadBasicInformation, 50 ThreadTimes, 51 ThreadPriority, 52 ThreadBasePriority, 53 ThreadAffinityMask, 54 ThreadImpersonationToken, 55 ThreadDescriptorTableEntry, 56 ThreadEnableAlignmentFaultFixup, 57 ThreadEventPair_Reusable, 58 ThreadQuerySetWin32StartAddress, 59 ThreadZeroTlsCell, 60 ThreadPerformanceCount, 61 ThreadAmILastThread, 62 ThreadIdealProcessor, 63 ThreadPriorityBoost, 64 ThreadSetTlsArrayAddress, 65 ThreadIsIoPending, 66 MaxThreadInfoClass 69 67 } THREADINFOCLASS; 70 68 71 69 typedef enum _FILE_INFORMATION_CLASS { 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 70 FileDirectoryInformation = 1, 71 FileFullDirectoryInformation, 72 FileBothDirectoryInformation, 73 FileBasicInformation, 74 FileStandardInformation, 75 FileInternalInformation, 76 FileEaInformation, 77 FileAccessInformation, 78 FileNameInformation, 79 FileRenameInformation, 80 FileLinkInformation, 81 FileNamesInformation, 82 FileDispositionInformation, 83 FilePositionInformation, 84 FileFullEaInformation, 85 FileModeInformation, 86 FileAlignmentInformation, 87 FileAllInformation, 88 FileAllocationInformation, 89 FileEndOfFileInformation, 90 FileAlternateNameInformation, 91 FileStreamInformation, 92 FilePipeInformation, 93 FilePipeLocalInformation, 94 FilePipeRemoteInformation, 95 FileMailslotQueryInformation, 96 FileMailslotSetInformation, 97 FileCompressionInformation, 98 FileObjectIdInformation, 99 FileCompletionInformation, 100 FileMoveClusterInformation, 101 FileQuotaInformation, 102 FileReparsePointInformation, 103 FileNetworkOpenInformation, 104 FileAttributeTagInformation, 105 FileTrackingInformation, 106 FileMaximumInformation 109 107 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; 110 108 111 typedef enum _SECTION_INHERIT 109 typedef enum _FSINFOCLASS { 110 FileFsVolumeInformation = 1, 111 FileFsLabelInformation, 112 FileFsSizeInformation, 113 FileFsDeviceInformation, 114 FileFsAttributeInformation, 115 FileFsControlInformation, 116 FileFsFullSizeInformation, 117 FileFsObjectIdInformation, 118 FileFsMaximumInformation 119 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; 120 121 typedef enum _SECTION_INHERIT 112 122 { 113 114 123 ViewShare = 1, 124 ViewUnmap = 2 115 125 116 126 } SECTION_INHERIT; 117 118 /* 119 127 128 /* 129 placeholder 120 130 */ 121 131 typedef enum _OBJECT_INFORMATION_CLASS 122 132 { 123 133 DunnoTheConstants1 124 134 125 135 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; … … 127 137 128 138 /* 129 * 139 * NtQuerySystemInformation 130 140 */ 131 141 132 142 typedef enum SYSTEM_INFORMATION_CLASS 133 { 134 135 136 137 143 { Unknown1 = 1, 144 Unknown2, 145 Unknown3, 146 Unknown4, 147 SystemPerformanceInformation 138 148 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; 139 149 140 150 /* reading coffee grounds... */ 141 151 typedef struct _THREAD_INFO 142 { DWORDUnknown1[6];143 DWORDThreadID;144 DWORDUnknown2[3];145 DWORDStatus;146 DWORDWaitReason;147 DWORDUnknown3[4];152 { DWORD Unknown1[6]; 153 DWORD ThreadID; 154 DWORD Unknown2[3]; 155 DWORD Status; 156 DWORD WaitReason; 157 DWORD Unknown3[4]; 148 158 } THREAD_INFO, PTHREAD_INFO; 149 159 150 160 typedef struct _VM_COUNTERS_ 151 { 152 153 154 155 156 157 158 159 160 161 161 { ULONG PeakVirtualSize; 162 ULONG VirtualSize; 163 ULONG PageFaultCount; 164 ULONG PeakWorkingSetSize; 165 ULONG WorkingSetSize; 166 ULONG QuotaPeakPagedPoolUsage; 167 ULONG QuotaPagedPoolUsage; 168 ULONG QuotaPeakNonPagedPoolUsage; 169 ULONG QuotaNonPagedPoolUsage; 170 ULONG PagefileUsage; 171 ULONG PeakPagefileUsage; 162 172 } VM_COUNTERS, *PVM_COUNTERS; 163 173 164 174 typedef struct _PROCESS_INFO 165 { DWORD Offset;/* 00 offset to next PROCESS_INFO ok*/166 DWORD ThreadCount;/* 04 number of ThreadInfo member ok */167 DWORDUnknown1[6];168 FILETIME CreationTime;/* 20 */169 DWORDUnknown2[5];170 PWCHAR ProcessName;/* 3c ok */171 DWORDBasePriority;172 DWORD ProcessID;/* 44 ok*/173 DWORDParentProcessID;174 DWORDHandleCount;175 DWORD Unknown3[2];/* 50 */176 ULONGPeakVirtualSize;177 ULONGVirtualSize;178 ULONGPageFaultCount;179 ULONGPeakWorkingSetSize;180 ULONGWorkingSetSize;181 ULONGQuotaPeakPagedPoolUsage;182 ULONGQuotaPagedPoolUsage;183 ULONGQuotaPeakNonPagedPoolUsage;184 ULONGQuotaNonPagedPoolUsage;185 ULONGPagefileUsage;186 ULONGPeakPagefileUsage;187 DWORDPrivateBytes;188 DWORDUnknown6[4];189 THREAD_INFO ati[ANYSIZE_ARRAY];/* 94 size=0x40*/175 { DWORD Offset; /* 00 offset to next PROCESS_INFO ok*/ 176 DWORD ThreadCount; /* 04 number of ThreadInfo member ok */ 177 DWORD Unknown1[6]; 178 FILETIME CreationTime; /* 20 */ 179 DWORD Unknown2[5]; 180 PWCHAR ProcessName; /* 3c ok */ 181 DWORD BasePriority; 182 DWORD ProcessID; /* 44 ok*/ 183 DWORD ParentProcessID; 184 DWORD HandleCount; 185 DWORD Unknown3[2]; /* 50 */ 186 ULONG PeakVirtualSize; 187 ULONG VirtualSize; 188 ULONG PageFaultCount; 189 ULONG PeakWorkingSetSize; 190 ULONG WorkingSetSize; 191 ULONG QuotaPeakPagedPoolUsage; 192 ULONG QuotaPagedPoolUsage; 193 ULONG QuotaPeakNonPagedPoolUsage; 194 ULONG QuotaNonPagedPoolUsage; 195 ULONG PagefileUsage; 196 ULONG PeakPagefileUsage; 197 DWORD PrivateBytes; 198 DWORD Unknown6[4]; 199 THREAD_INFO ati[ANYSIZE_ARRAY]; /* 94 size=0x40*/ 190 200 } PROCESS_INFO, PPROCESS_INFO; 191 201 192 202 NTSTATUS WINAPI NtQuerySystemInformation( 193 194 195 196 197 198 /* 199 * 203 IN SYSTEM_INFORMATION_CLASS SystemInformationClass, 204 OUT PVOID SystemInformation, 205 IN ULONG Length, 206 OUT PULONG ResultLength); 207 208 /* 209 * system configuration 200 210 */ 201 211 … … 203 213 typedef struct _SYSTEM_TIME_ADJUSTMENT 204 214 { 205 ULONGTimeAdjustment;206 BOOLEANTimeAdjustmentDisabled;215 ULONG TimeAdjustment; 216 BOOLEAN TimeAdjustmentDisabled; 207 217 208 218 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT; 209 219 210 typedef struct _SYSTEM_CONFIGURATION_INFO 220 typedef struct _SYSTEM_CONFIGURATION_INFO 211 221 { 212 union 213 { ULONGOemId;214 struct 215 { WORDProcessorArchitecture;216 WORDReserved;217 218 219 ULONGPageSize;220 PVOIDMinimumApplicationAddress;221 PVOIDMaximumApplicationAddress;222 ULONGActiveProcessorMask;223 ULONGNumberOfProcessors;224 ULONGProcessorType;225 ULONGAllocationGranularity;226 WORDProcessorLevel;227 WORDProcessorRevision;222 union 223 { ULONG OemId; 224 struct 225 { WORD ProcessorArchitecture; 226 WORD Reserved; 227 } tag1; 228 } tag2; 229 ULONG PageSize; 230 PVOID MinimumApplicationAddress; 231 PVOID MaximumApplicationAddress; 232 ULONG ActiveProcessorMask; 233 ULONG NumberOfProcessors; 234 ULONG ProcessorType; 235 ULONG AllocationGranularity; 236 WORD ProcessorLevel; 237 WORD ProcessorRevision; 228 238 229 239 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO; 230 240 231 241 232 typedef struct _SYSTEM_CACHE_INFORMATION 242 typedef struct _SYSTEM_CACHE_INFORMATION 233 243 { 234 ULONGCurrentSize;235 ULONGPeakSize;236 ULONGPageFaultCount;237 ULONGMinimumWorkingSet;238 ULONGMaximumWorkingSet;239 ULONGUnused[4];244 ULONG CurrentSize; 245 ULONG PeakSize; 246 ULONG PageFaultCount; 247 ULONG MinimumWorkingSet; 248 ULONG MaximumWorkingSet; 249 ULONG Unused[4]; 240 250 241 251 } SYSTEM_CACHE_INFORMATION; 242 252 243 253 /* 244 * 254 * NtQueryProcessInformation 245 255 */ 246 256 247 257 /* parameter ProcessInformationClass */ 248 258 249 typedef enum _PROCESSINFOCLASS 250 { 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 259 typedef enum _PROCESSINFOCLASS 260 { ProcessBasicInformation, 261 ProcessQuotaLimits, 262 ProcessIoCounters, 263 ProcessVmCounters, 264 ProcessTimes, 265 ProcessBasePriority, 266 ProcessRaisePriority, 267 ProcessDebugPort, 268 ProcessExceptionPort, 269 ProcessAccessToken, 270 ProcessLdtInformation, 271 ProcessLdtSize, 272 ProcessDefaultHardErrorMode, 273 ProcessIoPortHandlers, 274 ProcessPooledUsageAndLimits, 275 ProcessWorkingSetWatch, 276 ProcessUserModeIOPL, 277 ProcessEnableAlignmentFaultFixup, 278 ProcessPriorityClass, 279 ProcessWx86Information, 280 ProcessHandleCount, 281 ProcessAffinityMask, 282 ProcessPriorityBoost, 283 ProcessDeviceMap, 284 ProcessSessionInformation, 285 ProcessForegroundInformation, 286 ProcessWow64Information, 287 MaxProcessInfoClass 278 288 } PROCESSINFOCLASS; 279 289 280 290 /* parameter ProcessInformation (depending on ProcessInformationClass) */ 281 291 282 typedef struct _PROCESS_BASIC_INFORMATION 283 { DWORDExitStatus;284 DWORDPebBaseAddress;285 DWORDAffinityMask;286 DWORDBasePriority;287 ULONGUniqueProcessId;288 ULONGInheritedFromUniqueProcessId;292 typedef struct _PROCESS_BASIC_INFORMATION 293 { DWORD ExitStatus; 294 DWORD PebBaseAddress; 295 DWORD AffinityMask; 296 DWORD BasePriority; 297 ULONG UniqueProcessId; 298 ULONG InheritedFromUniqueProcessId; 289 299 } PROCESS_BASIC_INFORMATION; 290 300 291 301 NTSTATUS WINAPI NtQueryInformationProcess( 292 293 294 295 296 302 IN HANDLE ProcessHandle, 303 IN PROCESSINFOCLASS ProcessInformationClass, 304 OUT PVOID ProcessInformation, 305 IN ULONG ProcessInformationLength, 306 OUT PULONG ReturnLength); 297 307 298 308 #define NtCurrentProcess() ( (HANDLE) -1 ) 299 309 300 310 /* 301 * 302 */ 303 304 typedef enum _TIMER_TYPE 311 * timer 312 */ 313 314 typedef enum _TIMER_TYPE 305 315 { 306 307 316 NotificationTimer, 317 SynchronizationTimer 308 318 309 319 } TIMER_TYPE; 310 320 311 321 /* 312 * 313 */ 314 322 * token functions 323 */ 324 315 325 NTSTATUS WINAPI NtOpenProcessToken( 316 317 DWORD DesiredAccess, 318 319 326 HANDLE ProcessHandle, 327 DWORD DesiredAccess, 328 HANDLE *TokenHandle); 329 320 330 NTSTATUS WINAPI NtOpenThreadToken( 321 322 DWORD DesiredAccess, 323 324 331 HANDLE ThreadHandle, 332 DWORD DesiredAccess, 333 BOOLEAN OpenAsSelf, 334 HANDLE *TokenHandle); 325 335 326 336 NTSTATUS WINAPI NtAdjustPrivilegesToken( 327 328 329 330 331 332 337 IN HANDLE TokenHandle, 338 IN BOOLEAN DisableAllPrivileges, 339 IN PTOKEN_PRIVILEGES NewState, 340 IN DWORD BufferLength, 341 OUT PTOKEN_PRIVILEGES PreviousState, 342 OUT PDWORD ReturnLength); 333 343 334 344 NTSTATUS WINAPI NtQueryInformationToken( 335 336 DWORD tokeninfoclass, 337 338 339 340 341 /* 342 * 345 HANDLE token, 346 DWORD tokeninfoclass, 347 LPVOID tokeninfo, 348 DWORD tokeninfolength, 349 LPDWORD retlen ); 350 351 /* 352 * sid functions 343 353 */ 344 354 345 355 BOOLEAN WINAPI RtlAllocateAndInitializeSid ( 346 347 348 349 350 351 352 353 354 355 356 357 356 PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, 357 DWORD nSubAuthorityCount, 358 DWORD x3, 359 DWORD x4, 360 DWORD x5, 361 DWORD x6, 362 DWORD x7, 363 DWORD x8, 364 DWORD x9, 365 DWORD x10, 366 PSID pSid); 367 358 368 DWORD WINAPI RtlEqualSid(DWORD x1,DWORD x2); 359 369 DWORD WINAPI RtlFreeSid(DWORD x1); … … 366 376 367 377 /* 368 * 378 * security descriptor functions 369 379 */ 370 380 371 381 NTSTATUS WINAPI RtlCreateSecurityDescriptor( 372 373 382 PSECURITY_DESCRIPTOR lpsd, 383 DWORD rev); 374 384 375 385 NTSTATUS WINAPI RtlValidSecurityDescriptor( 376 386 PSECURITY_DESCRIPTOR SecurityDescriptor); 377 387 378 388 ULONG WINAPI RtlLengthSecurityDescriptor( 379 389 PSECURITY_DESCRIPTOR SecurityDescriptor); 380 390 381 391 NTSTATUS WINAPI RtlGetDaclSecurityDescriptor( 382 383 384 385 392 IN PSECURITY_DESCRIPTOR pSecurityDescriptor, 393 OUT PBOOLEAN lpbDaclPresent, 394 OUT PACL *pDacl, 395 OUT PBOOLEAN lpbDaclDefaulted); 386 396 387 397 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor ( 388 389 390 391 398 PSECURITY_DESCRIPTOR lpsd, 399 BOOLEAN daclpresent, 400 PACL dacl, 401 BOOLEAN dacldefaulted ); 392 402 393 403 NTSTATUS WINAPI RtlGetSaclSecurityDescriptor( 394 395 396 397 404 IN PSECURITY_DESCRIPTOR pSecurityDescriptor, 405 OUT PBOOLEAN lpbSaclPresent, 406 OUT PACL *pSacl, 407 OUT PBOOLEAN lpbSaclDefaulted); 398 408 399 409 NTSTATUS WINAPI RtlSetSaclSecurityDescriptor ( 400 401 402 403 410 PSECURITY_DESCRIPTOR lpsd, 411 BOOLEAN saclpresent, 412 PACL sacl, 413 BOOLEAN sacldefaulted); 404 414 405 415 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor( 406 407 408 416 PSECURITY_DESCRIPTOR SecurityDescriptor, 417 PSID *Owner, 418 PBOOLEAN OwnerDefaulted); 409 419 410 420 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor( 411 412 413 421 PSECURITY_DESCRIPTOR lpsd, 422 PSID owner, 423 BOOLEAN ownerdefaulted); 414 424 415 425 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor ( 416 417 418 426 PSECURITY_DESCRIPTOR lpsd, 427 PSID group, 428 BOOLEAN groupdefaulted); 419 429 420 430 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor( 421 422 423 424 425 /* 426 ###### ACL FUNCTIONS######427 431 PSECURITY_DESCRIPTOR SecurityDescriptor, 432 PSID *Group, 433 PBOOLEAN GroupDefaulted); 434 435 /* ############################## 436 ###### ACL FUNCTIONS ###### 437 ############################## 428 438 */ 429 439 … … 431 441 432 442 BOOLEAN WINAPI RtlFirstFreeAce( 433 434 443 PACL acl, 444 PACE_HEADER *x); 435 445 436 446 NTSTATUS WINAPI RtlAddAce( 437 438 439 440 441 442 447 PACL acl, 448 DWORD rev, 449 DWORD xnrofaces, 450 PACE_HEADER acestart, 451 DWORD acelen); 452 443 453 DWORD WINAPI RtlAddAccessAllowedAce(DWORD x1,DWORD x2,DWORD x3,DWORD x4); 444 454 DWORD WINAPI RtlGetAce(PACL pAcl,DWORD dwAceIndex,LPVOID *pAce ); 445 455 446 456 /* 447 * 457 * string functions 448 458 */ 449 459 … … 468 478 469 479 /* 470 * 480 * resource functions 471 481 */ 472 482 473 483 typedef struct _RTL_RWLOCK { 474 CRITICAL_SECTIONrtlCS;475 HANDLEhSharedReleaseSemaphore;476 UINTuSharedWaiters;477 HANDLEhExclusiveReleaseSemaphore;478 UINTuExclusiveWaiters;479 INTiNumberActive;480 HANDLEhOwningThreadId;481 DWORDdwTimeoutBoost;482 PVOIDpDebugInfo;484 CRITICAL_SECTION rtlCS; 485 HANDLE hSharedReleaseSemaphore; 486 UINT uSharedWaiters; 487 HANDLE hExclusiveReleaseSemaphore; 488 UINT uExclusiveWaiters; 489 INT iNumberActive; 490 HANDLE hOwningThreadId; 491 DWORD dwTimeoutBoost; 492 PVOID pDebugInfo; 483 493 } RTL_RWLOCK, *LPRTL_RWLOCK; 484 494 485 495 VOID WINAPI RtlInitializeResource( 486 487 496 LPRTL_RWLOCK); 497 488 498 VOID WINAPI RtlDeleteResource( 489 490 499 LPRTL_RWLOCK); 500 491 501 BYTE WINAPI RtlAcquireResourceExclusive( 492 493 502 LPRTL_RWLOCK, BYTE fWait); 503 494 504 BYTE WINAPI RtlAcquireResourceShared( 495 496 505 LPRTL_RWLOCK, BYTE fWait); 506 497 507 VOID WINAPI RtlReleaseResource( 498 499 508 LPRTL_RWLOCK); 509 500 510 VOID WINAPI RtlDumpResource( 501 502 503 /* 504 505 */ 506 507 typedef struct _TIME_FIELDS 511 LPRTL_RWLOCK); 512 513 /* 514 time functions 515 */ 516 517 typedef struct _TIME_FIELDS 508 518 { CSHORT Year; 509 519 CSHORT Month; … … 519 529 520 530 VOID WINAPI RtlSystemTimeToLocalTime( 521 522 531 IN PLARGE_INTEGER SystemTime, 532 OUT PLARGE_INTEGER LocalTime); 523 533 524 534 VOID WINAPI RtlTimeToTimeFields( 525 526 535 PLARGE_INTEGER liTime, 536 PTIME_FIELDS TimeFields); 527 537 528 538 BOOLEAN WINAPI RtlTimeFieldsToTime( 529 530 531 539 PTIME_FIELDS tfTimeFields, 540 PLARGE_INTEGER Time); 541 532 542 VOID WINAPI RtlTimeToElapsedTimeFields( 533 534 535 543 PLARGE_INTEGER liTime, 544 PTIME_FIELDS TimeFields); 545 536 546 BOOLEAN WINAPI RtlTimeToSecondsSince1980( 537 538 547 LPFILETIME ft, 548 LPDWORD timeret); 539 549 540 550 BOOLEAN WINAPI RtlTimeToSecondsSince1970( 541 542 543 544 /* 545 551 LPFILETIME ft, 552 LPDWORD timeret); 553 554 /* 555 heap functions 546 556 */ 547 557 … … 551 561 552 562 typedef struct 553 { ULONG Length;/* = sizeof(RTL_HEAP_DEFINITION) */554 ULONGUnknown[11];563 { ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */ 564 ULONG Unknown[11]; 555 565 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION; 556 566 557 567 HANDLE WINAPI RtlCreateHeap( 558 559 560 561 562 563 568 ULONG Flags, 569 PVOID BaseAddress, 570 ULONG SizeToReserve, 571 ULONG SizeToCommit, 572 PVOID Unknown, 573 PRTL_HEAP_DEFINITION Definition); 564 574 565 575 PVOID WINAPI RtlAllocateHeap( 566 567 568 576 HANDLE Heap, 577 ULONG Flags, 578 ULONG Size); 569 579 570 580 571 581 BOOLEAN WINAPI RtlFreeHeap( 572 HANDLE Heap, 573 ULONG Flags, 574 PVOID Address); 575 576 /* 577 * misc 578 */ 579 void __cdecl DbgPrint(LPCSTR fmt,LPVOID args); 580 DWORD NtRaiseException ( DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments,CONST ULONG_PTR *lpArguments); 581 DWORD RtlRaiseException ( DWORD x); 582 HANDLE Heap, 583 ULONG Flags, 584 PVOID Address); 585 586 /* 587 * misc 588 */ 589 void WINAPIV DbgPrint(LPCSTR fmt, ...); 590 void WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL); 591 void WINAPI RtlRaiseException(PEXCEPTION_RECORD); 592 void WINAPI RtlRaiseStatus(NTSTATUS); 593 void WINAPI RtlUnwind(PEXCEPTION_FRAME,LPVOID,PEXCEPTION_RECORD,DWORD); 582 594 VOID WINAPI RtlAcquirePebLock(void); 583 595 VOID WINAPI RtlReleasePebLock(void); … … 591 603 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD type); 592 604 INT WINAPI RtlExtendedLargeIntegerDivide(LARGE_INTEGER dividend, DWORD divisor, LPDWORD rest); 593 long longWINAPI RtlExtendedIntegerMultiply(LARGE_INTEGER factor1,INT factor2);594 DWORD WINAPI RtlFormatCurrentUserKeyPath( DWORD x);605 LARGE_INTEGER WINAPI RtlExtendedIntegerMultiply(LARGE_INTEGER factor1,INT factor2); 606 DWORD WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING String); 595 607 DWORD WINAPI RtlOpenCurrentUser(DWORD x1, DWORD *x2); 596 608 BOOLEAN WINAPI RtlDosPathNameToNtPathName_U( LPWSTR from,PUNICODE_STRING us,DWORD x2,DWORD x3); -
trunk/include/win/windef.h
r1251 r1890 1 /* $Id: windef.h,v 1.1 5 1999-10-11 20:15:48sandervl Exp $ */1 /* $Id: windef.h,v 1.16 1999-11-30 19:38:23 sandervl Exp $ */ 2 2 3 3 /* … … 63 63 /* Calling conventions definitions */ 64 64 65 #ifndef __WIN32OS2__ 65 66 #ifdef __i386__ 66 67 # if defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ >= 7) … … 72 73 # endif /* __GNUC__ */ 73 74 #else /* __i386__ */ 74 #ifndef __WIN32OS2__75 75 # define __stdcall 76 76 # define __cdecl 77 77 # define __RESTORE_ES 78 #endif79 78 #endif /* __i386__ */ 79 #endif 80 80 81 81 … … 183 183 typedef unsigned long ULONG_PTR; 184 184 typedef double DOUBLE; 185 typedef double LONGLONG _W;186 typedef double ULONGLONG _W;185 typedef double LONGLONG; 186 typedef double ULONGLONG; 187 187 188 188 /* FIXME: Wine does not compile with strict on, therefore strict … … 658 658 ULONG Mid32; 659 659 } c; 660 ULONGLONG _WLo64;660 ULONGLONG Lo64; 661 661 } d; 662 662 } DECIMAL; -
trunk/include/win/winnt.h
r1251 r1890 1 /* $Id: winnt.h,v 1.2 1999-10-11 20:15:48 sandervl Exp $ */2 3 1 /* 4 2 * Win32 definitions for Windows NT … … 23 21 24 22 /* u.x.wProcessorArchitecture (NT) */ 25 #define PROCESSOR_ARCHITECTURE_INTEL 0 26 #define PROCESSOR_ARCHITECTURE_MIPS 1 27 #define PROCESSOR_ARCHITECTURE_ALPHA 2 28 #define PROCESSOR_ARCHITECTURE_PPC 3 29 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF 23 #define PROCESSOR_ARCHITECTURE_INTEL 0 24 #define PROCESSOR_ARCHITECTURE_MIPS 1 25 #define PROCESSOR_ARCHITECTURE_ALPHA 2 26 #define PROCESSOR_ARCHITECTURE_PPC 3 27 #define PROCESSOR_ARCHITECTURE_SHX 4 28 #define PROCESSOR_ARCHITECTURE_ARM 5 29 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF 30 30 31 31 /* dwProcessorType */ 32 #define PROCESSOR_INTEL_386 386 33 #define PROCESSOR_INTEL_486 486 34 #define PROCESSOR_INTEL_PENTIUM 586 35 #define PROCESSOR_MIPS_R4000 4000 36 #define PROCESSOR_ALPHA_21064 21064 37 32 #define PROCESSOR_INTEL_386 386 33 #define PROCESSOR_INTEL_486 486 34 #define PROCESSOR_INTEL_PENTIUM 586 35 #define PROCESSOR_INTEL_860 860 36 #define PROCESSOR_MIPS_R2000 2000 37 #define PROCESSOR_MIPS_R3000 3000 38 #define PROCESSOR_MIPS_R4000 4000 39 #define PROCESSOR_ALPHA_21064 21064 40 #define PROCESSOR_PPC_601 601 41 #define PROCESSOR_PPC_603 603 42 #define PROCESSOR_PPC_604 604 43 #define PROCESSOR_PPC_620 620 44 #define PROCESSOR_HITACHI_SH3 10003 45 #define PROCESSOR_HITACHI_SH3E 10004 46 #define PROCESSOR_HITACHI_SH4 10005 47 #define PROCESSOR_MOTOROLA_821 821 48 #define PROCESSOR_SHx_SH3 103 49 #define PROCESSOR_SHx_SH4 104 50 #define PROCESSOR_STRONGARM 2577 51 #define PROCESSOR_ARM720 1824 /* 0x720 */ 52 #define PROCESSOR_ARM820 2080 /* 0x820 */ 53 #define PROCESSOR_ARM920 2336 /* 0x920 */ 54 #define PROCESSOR_ARM_7TDMI 70001 38 55 39 56 #define ANYSIZE_ARRAY 1 … … 56 73 57 74 /* Types */ 75 76 /* TCHAR data types definitions for Winelib. */ 77 /* These types are _not_ defined for the emulator, because they */ 78 /* depend on the UNICODE macro that only exists in user's code. */ 79 80 #ifndef __WINE__ 81 # ifdef UNICODE 82 typedef LPWSTR LPTSTR; 83 typedef LPCWSTR LPCTSTR; 84 #define __TEXT(string) L##string /*probably wrong */ 85 # else /* UNICODE */ 86 typedef LPSTR LPTSTR; 87 typedef LPCSTR LPCTSTR; 88 #define __TEXT(string) string 89 # endif /* UNICODE */ 90 #endif /* __WINE__ */ 91 #define TEXT(quote) __TEXT(quote) 58 92 59 93 typedef BYTE BOOLEAN; … … 96 130 /* The Win32 register context */ 97 131 98 #define CONTEXT_i386 0x00010000 99 #define CONTEXT_i486 CONTEXT_i386 100 #define CONTEXT_CONTROL (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP*/101 #define CONTEXT_INTEGER (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */ 102 #define CONTEXT_SEGMENTS (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS*/103 #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x0008L) /* 387 state*/104 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7*/105 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS) 132 /* CONTEXT is the CPU-dependent context; it should be used */ 133 /* wherever a platform-specific context is needed (e.g. exception */ 134 /* handling, Win32 register functions). */ 135 136 /* CONTEXT86 is the i386-specific context; it should be used */ 137 /* wherever only a 386 context makes sense (e.g. DOS interrupts, */ 138 /* Win16 register functions), so that this code can be compiled */ 139 /* on all platforms. */ 106 140 107 141 #define SIZE_OF_80387_REGISTERS 80 108 142 109 typedef struct 143 typedef struct _FLOATING_SAVE_AREA 110 144 { 111 145 DWORD ControlWord; … … 118 152 BYTE RegisterArea[SIZE_OF_80387_REGISTERS]; 119 153 DWORD Cr0NpxState; 120 } FLOATING_SAVE_AREA ;121 122 typedef struct 154 } FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; 155 156 typedef struct _CONTEXT86 123 157 { 124 158 DWORD ContextFlags; … … 156 190 DWORD Esp; 157 191 DWORD SegSs; 158 } CONTEXT, *PCONTEXT; 159 192 } CONTEXT86; 193 194 #define CONTEXT_X86 0x00010000 195 #define CONTEXT_i386 CONTEXT_X86 196 #define CONTEXT_i486 CONTEXT_X86 197 198 #define CONTEXT86_CONTROL (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */ 199 #define CONTEXT86_INTEGER (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */ 200 #define CONTEXT86_SEGMENTS (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */ 201 #define CONTEXT86_FLOATING_POINT (CONTEXT_i386 | 0x0008L) /* 387 state */ 202 #define CONTEXT86_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7 */ 203 #define CONTEXT86_FULL (CONTEXT86_CONTROL | CONTEXT86_INTEGER | CONTEXT86_SEGMENTS) 204 205 /* i386 context definitions */ 206 #ifdef __i386__ 207 208 #define CONTEXT_CONTROL CONTEXT86_CONTROL 209 #define CONTEXT_INTEGER CONTEXT86_INTEGER 210 #define CONTEXT_SEGMENTS CONTEXT86_SEGMENTS 211 #define CONTEXT_FLOATING_POINT CONTEXT86_FLOATING_POINT 212 #define CONTEXT_DEBUG_REGISTERS CONTEXT86_DEBUG_REGISTERS 213 #define CONTEXT_FULL CONTEXT86_FULL 214 215 typedef CONTEXT86 CONTEXT; 216 217 #endif /* __i386__ */ 218 219 /* Alpha context definitions */ 220 #ifdef _ALPHA_ 221 222 #define CONTEXT_ALPHA 0x00020000 223 224 #define CONTEXT_CONTROL (CONTEXT_ALPHA | 0x00000001L) 225 #define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA | 0x00000002L) 226 #define CONTEXT_INTEGER (CONTEXT_ALPHA | 0x00000004L) 227 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER) 228 229 typedef struct _CONTEXT 230 { 231 /* selected by CONTEXT_FLOATING_POINT */ 232 ULONGLONG FltF0; 233 ULONGLONG FltF1; 234 ULONGLONG FltF2; 235 ULONGLONG FltF3; 236 ULONGLONG FltF4; 237 ULONGLONG FltF5; 238 ULONGLONG FltF6; 239 ULONGLONG FltF7; 240 ULONGLONG FltF8; 241 ULONGLONG FltF9; 242 ULONGLONG FltF10; 243 ULONGLONG FltF11; 244 ULONGLONG FltF12; 245 ULONGLONG FltF13; 246 ULONGLONG FltF14; 247 ULONGLONG FltF15; 248 ULONGLONG FltF16; 249 ULONGLONG FltF17; 250 ULONGLONG FltF18; 251 ULONGLONG FltF19; 252 ULONGLONG FltF20; 253 ULONGLONG FltF21; 254 ULONGLONG FltF22; 255 ULONGLONG FltF23; 256 ULONGLONG FltF24; 257 ULONGLONG FltF25; 258 ULONGLONG FltF26; 259 ULONGLONG FltF27; 260 ULONGLONG FltF28; 261 ULONGLONG FltF29; 262 ULONGLONG FltF30; 263 ULONGLONG FltF31; 264 265 /* selected by CONTEXT_INTEGER */ 266 ULONGLONG IntV0; 267 ULONGLONG IntT0; 268 ULONGLONG IntT1; 269 ULONGLONG IntT2; 270 ULONGLONG IntT3; 271 ULONGLONG IntT4; 272 ULONGLONG IntT5; 273 ULONGLONG IntT6; 274 ULONGLONG IntT7; 275 ULONGLONG IntS0; 276 ULONGLONG IntS1; 277 ULONGLONG IntS2; 278 ULONGLONG IntS3; 279 ULONGLONG IntS4; 280 ULONGLONG IntS5; 281 ULONGLONG IntFp; 282 ULONGLONG IntA0; 283 ULONGLONG IntA1; 284 ULONGLONG IntA2; 285 ULONGLONG IntA3; 286 ULONGLONG IntA4; 287 ULONGLONG IntA5; 288 ULONGLONG IntT8; 289 ULONGLONG IntT9; 290 ULONGLONG IntT10; 291 ULONGLONG IntT11; 292 ULONGLONG IntRa; 293 ULONGLONG IntT12; 294 ULONGLONG IntAt; 295 ULONGLONG IntGp; 296 ULONGLONG IntSp; 297 ULONGLONG IntZero; 298 299 /* selected by CONTEXT_FLOATING_POINT */ 300 ULONGLONG Fpcr; 301 ULONGLONG SoftFpcr; 302 303 /* selected by CONTEXT_CONTROL */ 304 ULONGLONG Fir; 305 DWORD Psr; 306 DWORD ContextFlags; 307 DWORD Fill[4]; 308 } CONTEXT; 309 310 #define _QUAD_PSR_OFFSET HighSoftFpcr 311 #define _QUAD_FLAGS_OFFSET HighFir 312 313 #endif /* _ALPHA_ */ 314 315 /* Mips context definitions */ 316 #ifdef _MIPS_ 317 318 #define CONTEXT_R4000 0x00010000 319 320 #define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001) 321 #define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002) 322 #define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004) 323 324 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER) 325 326 typedef struct _CONTEXT 327 { 328 DWORD Argument[4]; 329 /* These are selected by CONTEXT_FLOATING_POINT */ 330 DWORD FltF0; 331 DWORD FltF1; 332 DWORD FltF2; 333 DWORD FltF3; 334 DWORD FltF4; 335 DWORD FltF5; 336 DWORD FltF6; 337 DWORD FltF7; 338 DWORD FltF8; 339 DWORD FltF9; 340 DWORD FltF10; 341 DWORD FltF11; 342 DWORD FltF12; 343 DWORD FltF13; 344 DWORD FltF14; 345 DWORD FltF15; 346 DWORD FltF16; 347 DWORD FltF17; 348 DWORD FltF18; 349 DWORD FltF19; 350 DWORD FltF20; 351 DWORD FltF21; 352 DWORD FltF22; 353 DWORD FltF23; 354 DWORD FltF24; 355 DWORD FltF25; 356 DWORD FltF26; 357 DWORD FltF27; 358 DWORD FltF28; 359 DWORD FltF29; 360 DWORD FltF30; 361 DWORD FltF31; 362 363 /* These are selected by CONTEXT_INTEGER */ 364 DWORD IntZero; 365 DWORD IntAt; 366 DWORD IntV0; 367 DWORD IntV1; 368 DWORD IntA0; 369 DWORD IntA1; 370 DWORD IntA2; 371 DWORD IntA3; 372 DWORD IntT0; 373 DWORD IntT1; 374 DWORD IntT2; 375 DWORD IntT3; 376 DWORD IntT4; 377 DWORD IntT5; 378 DWORD IntT6; 379 DWORD IntT7; 380 DWORD IntS0; 381 DWORD IntS1; 382 DWORD IntS2; 383 DWORD IntS3; 384 DWORD IntS4; 385 DWORD IntS5; 386 DWORD IntS6; 387 DWORD IntS7; 388 DWORD IntT8; 389 DWORD IntT9; 390 DWORD IntK0; 391 DWORD IntK1; 392 DWORD IntGp; 393 DWORD IntSp; 394 DWORD IntS8; 395 DWORD IntRa; 396 DWORD IntLo; 397 DWORD IntHi; 398 399 /* These are selected by CONTEXT_FLOATING_POINT */ 400 DWORD Fsr; 401 402 /* These are selected by CONTEXT_CONTROL */ 403 DWORD Fir; 404 DWORD Psr; 405 406 DWORD ContextFlags; 407 DWORD Fill[2]; 408 } CONTEXT; 409 410 #endif /* _MIPS_ */ 411 412 /* PowerPC context definitions */ 413 #ifdef __PPC__ 414 415 #define CONTEXT_CONTROL 0x0001 416 #define CONTEXT_FLOATING_POINT 0x0002 417 #define CONTEXT_INTEGER 0x0004 418 #define CONTEXT_DEBUG_REGISTERS 0x0008 419 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER) 420 421 typedef struct 422 { 423 /* These are selected by CONTEXT_FLOATING_POINT */ 424 double Fpr0; 425 double Fpr1; 426 double Fpr2; 427 double Fpr3; 428 double Fpr4; 429 double Fpr5; 430 double Fpr6; 431 double Fpr7; 432 double Fpr8; 433 double Fpr9; 434 double Fpr10; 435 double Fpr11; 436 double Fpr12; 437 double Fpr13; 438 double Fpr14; 439 double Fpr15; 440 double Fpr16; 441 double Fpr17; 442 double Fpr18; 443 double Fpr19; 444 double Fpr20; 445 double Fpr21; 446 double Fpr22; 447 double Fpr23; 448 double Fpr24; 449 double Fpr25; 450 double Fpr26; 451 double Fpr27; 452 double Fpr28; 453 double Fpr29; 454 double Fpr30; 455 double Fpr31; 456 double Fpscr; 457 458 /* These are selected by CONTEXT_INTEGER */ 459 DWORD Gpr0; 460 DWORD Gpr1; 461 DWORD Gpr2; 462 DWORD Gpr3; 463 DWORD Gpr4; 464 DWORD Gpr5; 465 DWORD Gpr6; 466 DWORD Gpr7; 467 DWORD Gpr8; 468 DWORD Gpr9; 469 DWORD Gpr10; 470 DWORD Gpr11; 471 DWORD Gpr12; 472 DWORD Gpr13; 473 DWORD Gpr14; 474 DWORD Gpr15; 475 DWORD Gpr16; 476 DWORD Gpr17; 477 DWORD Gpr18; 478 DWORD Gpr19; 479 DWORD Gpr20; 480 DWORD Gpr21; 481 DWORD Gpr22; 482 DWORD Gpr23; 483 DWORD Gpr24; 484 DWORD Gpr25; 485 DWORD Gpr26; 486 DWORD Gpr27; 487 DWORD Gpr28; 488 DWORD Gpr29; 489 DWORD Gpr30; 490 DWORD Gpr31; 491 492 DWORD Cr; 493 DWORD Xer; 494 495 /* These are selected by CONTEXT_CONTROL */ 496 DWORD Msr; 497 DWORD Iar; 498 DWORD Lr; 499 DWORD Ctr; 500 501 DWORD ContextFlags; 502 DWORD Fill[3]; 503 504 /* These are selected by CONTEXT_DEBUG_REGISTERS */ 505 DWORD Dr0; 506 DWORD Dr1; 507 DWORD Dr2; 508 DWORD Dr3; 509 DWORD Dr4; 510 DWORD Dr5; 511 DWORD Dr6; 512 DWORD Dr7; 513 } CONTEXT; 514 515 typedef struct _STACK_FRAME_HEADER 516 { 517 DWORD BackChain; 518 DWORD GlueSaved1; 519 DWORD GlueSaved2; 520 DWORD Reserved1; 521 DWORD Spare1; 522 DWORD Spare2; 523 524 DWORD Parameter0; 525 DWORD Parameter1; 526 DWORD Parameter2; 527 DWORD Parameter3; 528 DWORD Parameter4; 529 DWORD Parameter5; 530 DWORD Parameter6; 531 DWORD Parameter7; 532 } STACK_FRAME_HEADER,*PSTACK_FRAME_HEADER; 533 534 #endif /* __PPC__ */ 535 536 #ifdef __sparc__ 537 538 /* 539 * FIXME: 540 * 541 * There is no official CONTEXT structure defined for the SPARC 542 * architecture, so I just made one up. 543 * 544 * This structure is valid only for 32-bit SPARC architectures, 545 * not for 64-bit SPARC. 546 * 547 * Note that this structure contains only the 'top-level' registers; 548 * the rest of the register window chain is not visible. 549 * 550 * The layout follows the Solaris 'prgregset_t' structure. 551 * 552 */ 553 554 #define CONTEXT_SPARC 0x10000000 555 556 #define CONTEXT_CONTROL (CONTEXT_SPARC | 0x00000001) 557 #define CONTEXT_FLOATING_POINT (CONTEXT_SPARC | 0x00000002) 558 #define CONTEXT_INTEGER (CONTEXT_SPARC | 0x00000004) 559 560 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER) 561 562 typedef struct _CONTEXT 563 { 564 DWORD ContextFlags; 565 566 /* These are selected by CONTEXT_INTEGER */ 567 DWORD g0; 568 DWORD g1; 569 DWORD g2; 570 DWORD g3; 571 DWORD g4; 572 DWORD g5; 573 DWORD g6; 574 DWORD g7; 575 DWORD o0; 576 DWORD o1; 577 DWORD o2; 578 DWORD o3; 579 DWORD o4; 580 DWORD o5; 581 DWORD o6; 582 DWORD o7; 583 DWORD l0; 584 DWORD l1; 585 DWORD l2; 586 DWORD l3; 587 DWORD l4; 588 DWORD l5; 589 DWORD l6; 590 DWORD l7; 591 DWORD i0; 592 DWORD i1; 593 DWORD i2; 594 DWORD i3; 595 DWORD i4; 596 DWORD i5; 597 DWORD i6; 598 DWORD i7; 599 600 /* These are selected by CONTEXT_CONTROL */ 601 DWORD psr; 602 DWORD pc; 603 DWORD npc; 604 DWORD y; 605 DWORD wim; 606 DWORD tbr; 607 608 /* FIXME: floating point registers missing */ 609 610 } CONTEXT; 611 612 #endif 613 614 #if !defined(CONTEXT_FULL) && !defined(RC_INVOKED) 615 #error You need to define a CONTEXT for your CPU 616 #endif 617 618 typedef CONTEXT *PCONTEXT; 160 619 typedef HANDLE *PHANDLE; 161 620 162 621 #ifdef __WINE__ 163 622 164 /* Macros for easier access to context registers */623 /* Macros for easier access to i386 context registers */ 165 624 166 625 #define EAX_reg(context) ((context)->Eax) … … 200 659 #define DH_reg(context) (*((BYTE*)&EDX_reg(context)+1)) 201 660 202 #define IP_reg(context) (*(WORD*)&EIP_reg(context))203 #define SP_reg(context) (*(WORD*)&ESP_reg(context))204 205 #define FL_reg(context) (*(WORD*)&EFL_reg(context))206 207 661 #define SET_CFLAG(context) (EFL_reg(context) |= 0x0001) 208 662 #define RESET_CFLAG(context) (EFL_reg(context) &= ~0x0001) … … 213 667 #define V86BASE(context) ((context)->Dr7) /* ugly */ 214 668 669 670 /* Macros to retrieve the current context */ 671 672 #ifdef __i386__ 673 #define _DEFINE_REGS_ENTRYPOINT( name, fn, args ) \ 674 __asm__(".align 4\n\t" \ 675 ".globl " #name "\n\t" \ 676 ".type " #name ",@function\n\t" \ 677 #name ":\n\t" \ 678 "call CALL32_Regs\n\t" \ 679 ".long " #fn "\n\t" \ 680 ".byte " #args ", " #args "\n\t"); 681 682 #define DEFINE_REGS_ENTRYPOINT_0( name, fn ) \ 683 _DEFINE_REGS_ENTRYPOINT( name, fn, 0 ) 684 #define DEFINE_REGS_ENTRYPOINT_1( name, fn, t1 ) \ 685 _DEFINE_REGS_ENTRYPOINT( name, fn, 4 ) 686 #define DEFINE_REGS_ENTRYPOINT_2( name, fn, t1, t2 ) \ 687 _DEFINE_REGS_ENTRYPOINT( name, fn, 8 ) 688 #define DEFINE_REGS_ENTRYPOINT_3( name, fn, t1, t2, t3 ) \ 689 _DEFINE_REGS_ENTRYPOINT( name, fn, 12 ) 690 #define DEFINE_REGS_ENTRYPOINT_4( name, fn, t1, t2, t3, t4 ) \ 691 _DEFINE_REGS_ENTRYPOINT( name, fn, 16 ) 692 693 #endif /* __i386__ */ 694 695 #ifdef __sparc__ 696 /* FIXME: use getcontext() to retrieve full context */ 697 #define _GET_CONTEXT \ 698 CONTEXT context; \ 699 do { memset(&context, 0, sizeof(CONTEXT)); \ 700 context.ContextFlags = CONTEXT_CONTROL; \ 701 context.pc = (DWORD)__builtin_return_address(0); \ 702 } while (0) 703 704 #define DEFINE_REGS_ENTRYPOINT_0( name, fn ) \ 705 void WINAPI name ( void ) \ 706 { _GET_CONTEXT; fn( &context ); } 707 #define DEFINE_REGS_ENTRYPOINT_1( name, fn, t1 ) \ 708 void WINAPI name ( t1 a1 ) \ 709 { _GET_CONTEXT; fn( a1, &context ); } 710 #define DEFINE_REGS_ENTRYPOINT_2( name, fn, t1, t2 ) \ 711 void WINAPI name ( t1 a1, t2 a2 ) \ 712 { _GET_CONTEXT; fn( a1, a2, &context ); } 713 #define DEFINE_REGS_ENTRYPOINT_3( name, fn, t1, t2, t3 ) \ 714 void WINAPI name ( t1 a1, t2 a2, t3 a3 ) \ 715 { _GET_CONTEXT; fn( a1, a2, a3, &context ); } 716 #define DEFINE_REGS_ENTRYPOINT_4( name, fn, t1, t2, t3, t4 ) \ 717 void WINAPI name ( t1 a1, t2 a2, t3 a3, t4 a4 ) \ 718 { _GET_CONTEXT; fn( a1, a2, a3, a4, &context ); } 719 720 #endif /* __sparc__ */ 721 722 #ifndef DEFINE_REGS_ENTRYPOINT_0 723 #error You need to define DEFINE_REGS_ENTRYPOINT macros for your CPU 724 #endif 725 726 #ifdef __i386__ 727 # define GET_IP(context) ((LPVOID)(context)->Eip) 728 #endif 729 #ifdef __sparc__ 730 # define GET_IP(context) ((LPVOID)(context)->pc) 731 #endif 732 733 #if !defined(GET_IP) && !defined(RC_INVOKED) 734 # error You must define GET_IP for this CPU 735 #endif 736 215 737 #endif /* __WINE__ */ 216 738 … … 219 741 */ 220 742 743 #define STATUS_SUCCESS 0x00000000 221 744 #define STATUS_WAIT_0 0x00000000 222 745 #define STATUS_ABANDONED_WAIT_0 0x00000080 … … 224 747 #define STATUS_TIMEOUT 0x00000102 225 748 #define STATUS_PENDING 0x00000103 749 #define STATUS_GUARD_PAGE_VIOLATION 0x80000001 226 750 #define STATUS_DATATYPE_MISALIGNMENT 0x80000002 227 751 #define STATUS_BREAKPOINT 0x80000003 228 752 #define STATUS_SINGLE_STEP 0x80000004 753 #define STATUS_BUFFER_OVERFLOW 0x80000005 754 #define STATUS_UNSUCCESSFUL 0xC0000001 229 755 #define STATUS_ACCESS_VIOLATION 0xC0000005 230 756 #define STATUS_IN_PAGE_ERROR 0xC0000006 757 #define STATUS_INVALID_PARAMETER 0xC000000D 231 758 #define STATUS_NO_MEMORY 0xC0000017 759 #define STATUS_CONFLICTING_ADDRESSES 0xC0000018 232 760 #define STATUS_ILLEGAL_INSTRUCTION 0xC000001D 761 #define STATUS_BUFFER_TOO_SMALL 0xC0000023 233 762 #define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025 234 763 #define STATUS_INVALID_DISPOSITION 0xC0000026 764 #define STATUS_UNWIND 0xC0000027 765 #define STATUS_BAD_STACK 0xC0000028 766 #define STATUS_INVALID_UNWIND_TARGET 0xC0000029 767 #define STATUS_UNKNOWN_REVISION 0xC0000058 768 #define STATUS_INVALID_SECURITY_DESCR 0xC0000079 235 769 #define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C 236 770 #define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D … … 244 778 #define STATUS_INTEGER_OVERFLOW 0xC0000095 245 779 #define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096 780 #define STATUS_INVALID_PARAMETER_2 0xC00000F0 246 781 #define STATUS_STACK_OVERFLOW 0xC00000FD 247 782 #define STATUS_CONTROL_C_EXIT 0xC000013A 248 249 #define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION250 #define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT251 #define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT252 #define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP253 #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED254 #define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND255 #define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO256 #define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT257 #define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION258 #define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW259 #define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK260 #define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW261 #define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO262 #define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW263 #define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION264 #define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR265 #define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION266 #define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION267 #define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW268 #define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION269 #define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION270 #define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE271 #define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT272 783 273 784 #define MAXIMUM_WAIT_OBJECTS 64 … … 335 846 } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; 336 847 848 849 /* 850 * The exception frame, used for registering exception handlers 851 * Win32 cares only about this, but compilers generally emit 852 * larger exception frames for their own use. 853 */ 854 855 struct __EXCEPTION_FRAME; 856 857 typedef DWORD (*PEXCEPTION_HANDLER)(PEXCEPTION_RECORD,struct __EXCEPTION_FRAME*, 858 PCONTEXT,struct __EXCEPTION_FRAME **); 859 860 typedef struct __EXCEPTION_FRAME 861 { 862 struct __EXCEPTION_FRAME *Prev; 863 PEXCEPTION_HANDLER Handler; 864 } EXCEPTION_FRAME, *PEXCEPTION_FRAME; 865 337 866 #include "poppack.h" 338 867 … … 341 870 */ 342 871 343 typedef LONG ( * CALLBACKPTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo);872 typedef LONG (CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo); 344 873 typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; 345 874 … … 347 876 LPTOP_LEVEL_EXCEPTION_FILTER 348 877 WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter ); 878 879 /* status values for ContinueDebugEvent */ 880 #define DBG_CONTINUE 0x00010002 881 #define DBG_TERMINATE_THREAD 0x40010003 882 #define DBG_TERMINATE_PROCESS 0x40010004 883 #define DBG_CONTROL_C 0x40010005 884 #define DBG_CONTROL_BREAK 0x40010008 885 #define DBG_EXCEPTION_NOT_HANDLED 0x80010001 886 887 struct _TEB; 888 889 #ifdef __WINE__ 890 891 #ifndef __WIN32OS2__ 892 #if defined(__i386__) 893 static inline struct _TEB * WINE_UNUSED __get_teb(void) 894 { 895 struct _TEB *teb; 896 __asm__(".byte 0x64\n\tmovl (0x18),%0" : "=r" (teb)); 897 return teb; 898 } 899 #elif defined(HAVE__LWP_CREATE) 900 extern void *_lwp_getprivate(void); 901 static inline struct _TEB * WINE_UNUSED __get_teb(void) 902 { 903 return (struct _TEB *)_lwp_getprivate(); 904 } 905 #else 906 #error NtCurrentTeb() not defined for this architecture! 907 #endif 908 909 #define NtCurrentTeb() __get_teb() 910 911 #else /* __WINE__ */ 912 extern struct _TEB * WINAPI NtCurrentTeb(void); 913 #endif 914 #endif //__WIN32OS2__ 349 915 350 916 /* … … 383 949 #include "pshpack1.h" 384 950 951 typedef DWORD ACCESS_MASK, *PACCESS_MASK; 952 953 typedef struct _GENERIC_MAPPING { 954 ACCESS_MASK GenericRead; 955 ACCESS_MASK GenericWrite; 956 ACCESS_MASK GenericExecute; 957 ACCESS_MASK GenericAll; 958 } GENERIC_MAPPING, *PGENERIC_MAPPING; 959 960 #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED 961 #define SID_IDENTIFIER_AUTHORITY_DEFINED 385 962 typedef struct { 386 963 BYTE Value[6]; 387 964 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY; 388 965 #endif /* !defined(SID_IDENTIFIER_AUTHORITY_DEFINED) */ 966 967 #ifndef SID_DEFINED 968 #define SID_DEFINED 389 969 typedef struct _SID { 390 970 BYTE Revision; … … 393 973 DWORD SubAuthority[1]; 394 974 } SID,*PSID; 975 #endif /* !defined(SID_DEFINED) */ 395 976 396 977 #define SID_REVISION (1) /* Current revision */ … … 424 1005 #define SE_SELF_RELATIVE 0x8000 425 1006 426 typedef DWORD SECURITY_INFORMATION ;427 typedef WORD SECURITY_DESCRIPTOR_CONTROL ;1007 typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION; 1008 typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL; 428 1009 429 1010 /* The security descriptor structure */ … … 436 1017 PACL Sacl; 437 1018 PACL Dacl; 438 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR , *LPSECURITY_DESCRIPTOR;1019 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR; 439 1020 440 1021 #define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR)) … … 476 1057 */ 477 1058 478 typedef struct _LARGE_INTEGER 479 { 480 DWORD LowPart; 481 LONG HighPart; 1059 typedef union _LARGE_INTEGER { 1060 struct { 1061 DWORD LowPart; 1062 LONG HighPart; 1063 } DUMMYSTRUCTNAME; 1064 LONGLONG QuadPart; 482 1065 } LARGE_INTEGER, *LPLARGE_INTEGER, *PLARGE_INTEGER; 483 1066 484 typedef struct _ULARGE_INTEGER 485 { 486 DWORD LowPart; 487 DWORD HighPart; 1067 typedef union _ULARGE_INTEGER { 1068 struct { 1069 DWORD LowPart; 1070 LONG HighPart; 1071 } DUMMYSTRUCTNAME; 1072 LONGLONG QuadPart; 488 1073 } ULARGE_INTEGER, *LPULARGE_INTEGER, *PULARGE_INTEGER; 489 1074 … … 498 1083 DWORD Attributes; 499 1084 } LUID_AND_ATTRIBUTES; 1085 1086 /* 1087 * PRIVILEGE_SET 1088 */ 1089 1090 typedef struct _PRIVILEGE_SET { 1091 DWORD PrivilegeCount; 1092 DWORD Control; 1093 LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; 1094 } PRIVILEGE_SET, *PPRIVILEGE_SET; 500 1095 501 1096 /* … … 560 1155 SecurityImpersonation, 561 1156 SecurityDelegation 562 } SECURITY_IMPERSONATION_LEVEL ;1157 } SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL; 563 1158 564 1159 … … 689 1284 #define GENERIC_EXECUTE 0x20000000 690 1285 #define GENERIC_ALL 0x10000000 1286 1287 #define MAXIMUM_ALLOWED 0x02000000 1288 #define ACCESS_SYSTEM_SECURITY 0x01000000 691 1289 692 1290 #define EVENT_MODIFY_STATE 0x0002 … … 791 1389 #define SACL_SECURITY_INFORMATION 0x00000008 792 1390 793 #define UNREFERENCED_PARAMETER(P) (P)794 795 1391 #include "poppack.h" 796 1392 -
trunk/include/win/winprocess.h
r1887 r1890 1 /* $Id: winprocess.h,v 1. 4 1999-11-30 14:32:34 sandervl Exp $ */1 /* $Id: winprocess.h,v 1.5 1999-11-30 19:38:24 sandervl Exp $ */ 2 2 /* 3 3 * Process definitions … … 98 98 WORD winver; /* Windows version figured out by VERSION_GetVersion */ 99 99 struct _SERVICETABLE *service_table; /* Service table for service thread */ 100 #ifdef __WIN32OS2__ 101 DWORD hInstance; //instance handle of executable 102 #endif 100 103 } PDB; 101 104 -
trunk/include/win/wtypes.h
r805 r1890 164 164 #endif 165 165 } u; 166 LONGLONG _Wint64;166 LONGLONG int64; 167 167 } CY; 168 168 #endif /* _tagCY_DEFINED */
Note:
See TracChangeset
for help on using the changeset viewer.