From 75c7893797b0ddf33eb8c50f9e04034b465bdb4b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 13 Mar 2006 11:22:51 +0000 Subject: [PATCH] * autoload.cc (LoadDLLfuncNt): New define to wrap NT native functions. Use for NT native functions throughout. * dtable.cc (handle_to_fn): Treate return value of NtQueryObject as NTSTATUS value. --- winsup/cygwin/ChangeLog | 7 ++++++ winsup/cygwin/autoload.cc | 51 +++++++++++++++++++++------------------ winsup/cygwin/dtable.cc | 5 ++-- 3 files changed, 37 insertions(+), 26 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index eec1915b9..f84b3d9e8 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2006-03-13 Corinna Vinschen + + * autoload.cc (LoadDLLfuncNt): New define to wrap NT native functions. + Use for NT native functions throughout. + * dtable.cc (handle_to_fn): Treate return value of NtQueryObject as + NTSTATUS value. + 2006-03-12 Christopher Faylor * cygtls.cc (_cygtls::remove): Reset initialized flag right away if we diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index 6b889a946..c6ce11317 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -378,30 +378,33 @@ LoadDLLfunc (NetUserGetGroups, 28, netapi32) LoadDLLfunc (NetUserGetInfo, 16, netapi32) LoadDLLfunc (NetWkstaUserGetInfo, 12, netapi32) -LoadDLLfuncEx (NtClose, 4, ntdll, 1) -LoadDLLfuncEx (NtCreateFile, 44, ntdll, 1) -LoadDLLfuncEx (NtCreateSection, 28, ntdll, 1) -LoadDLLfuncEx (NtCreateToken, 52, ntdll, 1) -LoadDLLfuncEx (NtLockVirtualMemory, 16, ntdll, 1) -LoadDLLfuncEx (NtMapViewOfSection, 40, ntdll, 1) -LoadDLLfuncEx (NtOpenDirectoryObject, 12, ntdll, 1) -LoadDLLfuncEx (NtOpenFile, 24, ntdll, 1) -LoadDLLfuncEx (NtOpenSection, 12, ntdll, 1) -LoadDLLfuncEx (NtQueryDirectoryObject, 28, ntdll, 1) -LoadDLLfuncEx2 (NtQueryDirectoryFile, 44, ntdll, 1, 1) -LoadDLLfuncEx2 (NtQueryInformationFile, 20, ntdll, 1, 1) -LoadDLLfuncEx (NtQueryInformationProcess, 20, ntdll, 1) -LoadDLLfuncEx2 (NtQueryObject, 20, ntdll, 1, 1) -LoadDLLfuncEx (NtQuerySystemInformation, 16, ntdll, 1) -LoadDLLfuncEx (NtQuerySecurityObject, 20, ntdll, 1) -LoadDLLfuncEx (NtQueryVirtualMemory, 24, ntdll, 1) -LoadDLLfuncEx (NtQueryVolumeInformationFile, 20, ntdll, 1) -LoadDLLfuncEx (NtSetSecurityObject, 12, ntdll, 1) -LoadDLLfuncEx (NtUnlockVirtualMemory, 16, ntdll, 1) -LoadDLLfuncEx (NtUnmapViewOfSection, 8, ntdll, 1) -LoadDLLfuncEx (RtlInitUnicodeString, 8, ntdll, 1) -LoadDLLfuncEx (RtlNtStatusToDosError, 4, ntdll, 1) -LoadDLLfuncEx (RtlIsDosDeviceName_U, 4, ntdll, 1) +/* 0xc000007a == STATUS_PROCEDURE_NOT_FOUND */ +#define LoadDLLfuncNt(name, n, dllname) \ + LoadDLLfuncEx2(name, n, dllname, 1, 0xc000007a) +LoadDLLfuncNt (NtClose, 4, ntdll) +LoadDLLfuncNt (NtCreateFile, 44, ntdll) +LoadDLLfuncNt (NtCreateSection, 28, ntdll) +LoadDLLfuncNt (NtCreateToken, 52, ntdll) +LoadDLLfuncNt (NtLockVirtualMemory, 16, ntdll) +LoadDLLfuncNt (NtMapViewOfSection, 40, ntdll) +LoadDLLfuncNt (NtOpenDirectoryObject, 12, ntdll) +LoadDLLfuncNt (NtOpenFile, 24, ntdll) +LoadDLLfuncNt (NtOpenSection, 12, ntdll) +LoadDLLfuncNt (NtQueryDirectoryObject, 28, ntdll) +LoadDLLfuncNt (NtQueryDirectoryFile, 44, ntdll) +LoadDLLfuncNt (NtQueryInformationFile, 20, ntdll) +LoadDLLfuncNt (NtQueryInformationProcess, 20, ntdll) +LoadDLLfuncNt (NtQueryObject, 20, ntdll) +LoadDLLfuncNt (NtQuerySystemInformation, 16, ntdll) +LoadDLLfuncNt (NtQuerySecurityObject, 20, ntdll) +LoadDLLfuncNt (NtQueryVirtualMemory, 24, ntdll) +LoadDLLfuncNt (NtQueryVolumeInformationFile, 20, ntdll) +LoadDLLfuncNt (NtSetSecurityObject, 12, ntdll) +LoadDLLfuncNt (NtUnlockVirtualMemory, 16, ntdll) +LoadDLLfuncNt (NtUnmapViewOfSection, 8, ntdll) +LoadDLLfuncNt (RtlInitUnicodeString, 8, ntdll) +LoadDLLfuncNt (RtlIsDosDeviceName_U, 4, ntdll) +LoadDLLfuncNt (RtlNtStatusToDosError, 4, ntdll) LoadDLLfuncEx (EnumProcessModules, 16, psapi, 1) LoadDLLfuncEx (GetModuleFileNameExA, 16, psapi, 1) diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index c4a8333d5..8996e8587 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -829,9 +829,10 @@ handle_to_fn (HANDLE h, char *posix_fn) ntfn->Name.MaximumLength = sizeof (fnbuf) - sizeof (*ntfn); ntfn->Name.Buffer = (WCHAR *) (ntfn + 1); - DWORD res = NtQueryObject (h, ObjectNameInformation, ntfn, sizeof (fnbuf), NULL); + NTSTATUS res = NtQueryObject (h, ObjectNameInformation, ntfn, sizeof (fnbuf), + NULL); - if (res) + if (NT_SUCCESS (res)) { strcpy (posix_fn, unknown_file); debug_printf ("NtQueryObject failed"); -- 2.43.5