Changeset 1890 for trunk/include/win/winnt.h
- Timestamp:
- Nov 30, 1999, 8:38:24 PM (26 years ago)
- File:
-
- 1 edited
-
trunk/include/win/winnt.h (modified) (23 diffs)
Legend:
- Unmodified
- Added
- Removed
-
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
Note:
See TracChangeset
for help on using the changeset viewer.
