Changeset 2985 for trunk/src/lib/nt/ntstuff.h
- Timestamp:
- Nov 1, 2016, 7:26:35 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/nt/ntstuff.h
r2913 r2985 40 40 #include <ntstatus.h> 41 41 #undef timeval 42 43 #include <k/kTypes.h> 42 44 43 45 … … 467 469 #endif 468 470 471 #ifndef DUPLICATE_CLOSE_SOURCE /* For the misnomer NtDuplicateObject. */ 472 # define DUPLICATE_CLOSE_SOURCE 0x00000001U 473 # define DUPLICATE_SAME_ACCESS 0x00000002U 474 #endif 475 #ifndef DUPLICATE_SAME_ATTRIBUTES 476 # define DUPLICATE_SAME_ATTRIBUTES 0x00000004U 477 #endif 478 469 479 470 480 /** @name NT status codes and associated macros. … … 480 490 /** @} */ 481 491 492 /** The pseudohandle for the current process. */ 493 #define MY_NT_CURRENT_PROCESS ((HANDLE)~(uintptr_t)0) 494 /** The pseudohandle for the current thread. */ 495 #define MY_NT_CURRENT_THREAD ((HANDLE)~(uintptr_t)1) 496 497 typedef struct MY_CLIENT_ID 498 { 499 HANDLE UniqueProcess; 500 HANDLE UniqueThread; 501 } MY_CLIENT_ID; 502 503 /** Partial TEB. */ 504 typedef struct MY_PARTIAL_TEB 505 { 506 NT_TIB NtTib; 507 PVOID EnvironmentPointer; 508 MY_CLIENT_ID ClientId; 509 PVOID ActiveRpcHandle; 510 PVOID ThreadLocalStoragePointer; 511 PPEB ProcessEnvironmentBlock; 512 KU32 LastErrorValue; 513 KU32 CountOfOwnedCriticalSections; 514 PVOID CsrClientThread; 515 PVOID Win32ThreadInfo; 516 } MY_PARTIAL_TEB; 517 518 /** Internal macro for reading uintptr_t sized TEB members. */ 519 #if K_ARCH == K_ARCH_AMD64 520 # define MY_NT_READ_TEB_WORKER(a_offTebMember) ( __readgsqword(a_offTebMember) ) 521 #elif K_ARCH == K_ARCH_X86 522 # define MY_NT_READ_TEB_WORKER(a_offTebMember) ( __readfsdword(a_offTebMember) ) 523 #else 524 # else "Port me!" 525 #endif 526 /** Get the PEB pointer. 527 * @remark Needs stddef.h. */ 528 #define MY_NT_CURRENT_PEB() ( (PPEB)MY_NT_READ_TEB_WORKER(offsetof(MY_PARTIAL_TEB, ProcessEnvironmentBlock)) ) 529 /** Get the TEB pointer. 530 * @remark Needs stddef.h. */ 531 #define MY_NT_CURRENT_TEB() ( (PTEB)MY_NT_READ_TEB_WORKER(offsetof(NT_TIB, Self)) ) 532 482 533 483 534 /******************************************************************************* … … 488 539 PLARGE_INTEGER, ULONG, ULONG, ULONG, ULONG, PVOID, ULONG); 489 540 extern MY_NTSTATUS (WINAPI * g_pfnNtDeleteFile)(MY_OBJECT_ATTRIBUTES *); 541 extern MY_NTSTATUS (WINAPI * g_pfnNtDuplicateObject)(HANDLE hSrcProc, HANDLE hSrc, HANDLE hDstProc, HANDLE *phRet, 542 MY_ACCESS_MASK fDesiredAccess, ULONG fAttribs, ULONG fOptions); 490 543 extern MY_NTSTATUS (WINAPI * g_pfnNtReadFile)(HANDLE hFile, HANDLE hEvent, MY_IO_APC_ROUTINE *pfnApc, PVOID pvApcCtx, 491 544 MY_IO_STATUS_BLOCK *, PVOID pvBuf, ULONG cbToRead, PLARGE_INTEGER poffFile, … … 509 562 extern UCHAR (WINAPI * g_pfnRtlUpperChar)(UCHAR uch); 510 563 extern ULONG (WINAPI * g_pfnRtlNtStatusToDosError)(MY_NTSTATUS rcNt); 564 extern VOID (WINAPI * g_pfnRtlAcquirePebLock)(VOID); 565 extern VOID (WINAPI * g_pfnRtlReleasePebLock)(VOID); 511 566 512 567
Note:
See TracChangeset
for help on using the changeset viewer.