* cygpath.cc: Change including headers to allow building against

Mingw64 headers. Include ntdef.h and ntdll.h rather than ddk headers.
	Define _WIN32_WINNT and WINVER as 0x0602.
	(RtlEqualUnicodePathPrefix): Drop definition.  Pulled in from ntdll.h
	now.
	(get_device_name): s/Zw/Nt.
	* dumper.cc: Include sys/param.h
	(dumper::dump_memory_region): Use MIN rather than min.
	* locale.cc: Include stdlib.h.  Define _WIN32_WINNT and WINVER as
	0x0602.
	* ps.cc: Include ntdef.h and ntdll.h rather than ddk headers.
	* regtool.cc (regDeleteKeyEx): Drop WINADVAPI qualifier.
This commit is contained in:
Corinna Vinschen 2012-07-06 14:52:33 +00:00
parent 3eedbf8611
commit 9cfc9511cd
6 changed files with 45 additions and 38 deletions

View File

@ -1,3 +1,18 @@
2012-07-06 Corinna Vinschen <corinna@vinschen.de>
* cygpath.cc: Change including headers to allow building against
Mingw64 headers. Include ntdef.h and ntdll.h rather than ddk headers.
Define _WIN32_WINNT and WINVER as 0x0602.
(RtlEqualUnicodePathPrefix): Drop definition. Pulled in from ntdll.h
now.
(get_device_name): s/Zw/Nt.
* dumper.cc: Include sys/param.h
(dumper::dump_memory_region): Use MIN rather than min.
* locale.cc: Include stdlib.h. Define _WIN32_WINNT and WINVER as
0x0602.
* ps.cc: Include ntdef.h and ntdll.h rather than ddk headers.
* regtool.cc (regDeleteKeyEx): Drop WINADVAPI qualifier.
2012-06-03 Corinna Vinschen <corinna@vinschen.de> 2012-06-03 Corinna Vinschen <corinna@vinschen.de>
* cygcheck.cc (dump_sysinfo): Change "Server 8" to official * cygcheck.cc (dump_sysinfo): Change "Server 8" to official

View File

@ -8,10 +8,6 @@ This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */ details. */
#define NOCOMATTRIBUTE
#define WINVER 0x0600
#include <shlobj.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <wchar.h> #include <wchar.h>
@ -19,17 +15,22 @@ details. */
#include <stdlib.h> #include <stdlib.h>
#include <limits.h> #include <limits.h>
#include <getopt.h> #include <getopt.h>
#include <windows.h>
#include <userenv.h>
#include <io.h> #include <io.h>
#include <sys/fcntl.h> #include <sys/fcntl.h>
#include <sys/cygwin.h> #include <sys/cygwin.h>
#include <cygwin/version.h> #include <cygwin/version.h>
#include <ctype.h> #include <ctype.h>
#include <errno.h> #include <errno.h>
#include <ddk/ntddk.h>
#include <ddk/winddk.h> #define _WIN32_WINNT 0x0602
#include <ddk/ntifs.h> #define WINVER 0x0602
#define NOCOMATTRIBUTE
#include <windows.h>
#include <userenv.h>
#include <shlobj.h>
#include <ntdef.h>
#include <ntdll.h>
#include "wide_path.h" #include "wide_path.h"
#include "loadlib.h" #include "loadlib.h"
@ -148,18 +149,6 @@ RtlAllocateUnicodeString (PUNICODE_STRING uni, ULONG size)
return uni->Buffer != NULL; return uni->Buffer != NULL;
} }
static inline BOOLEAN
RtlEqualUnicodePathPrefix (PUNICODE_STRING path, PUNICODE_STRING prefix,
BOOLEAN caseinsensitive)
{
UNICODE_STRING p;
p.Length = p.MaximumLength = prefix->Length < path->Length
? prefix->Length : path->Length;
p.Buffer = path->Buffer;
return RtlEqualUnicodeString (&p, prefix, caseinsensitive);
}
static size_t static size_t
my_wcstombs (char *dest, const wchar_t *src, size_t n) my_wcstombs (char *dest, const wchar_t *src, size_t n)
{ {
@ -203,11 +192,11 @@ get_device_name (char *path)
query it and use the new name as actual device name to search for in the query it and use the new name as actual device name to search for in the
DOS device name directory. If not, just use the incoming device name. */ DOS device name directory. If not, just use the incoming device name. */
InitializeObjectAttributes (&ntobj, &ntdev, OBJ_CASE_INSENSITIVE, NULL, NULL); InitializeObjectAttributes (&ntobj, &ntdev, OBJ_CASE_INSENSITIVE, NULL, NULL);
status = ZwOpenSymbolicLinkObject (&lnk, SYMBOLIC_LINK_QUERY, &ntobj); status = NtOpenSymbolicLinkObject (&lnk, SYMBOLIC_LINK_QUERY, &ntobj);
if (NT_SUCCESS (status)) if (NT_SUCCESS (status))
{ {
status = ZwQuerySymbolicLinkObject (lnk, &tgtdev, NULL); status = NtQuerySymbolicLinkObject (lnk, &tgtdev, NULL);
ZwClose (lnk); NtClose (lnk);
if (!NT_SUCCESS (status)) if (!NT_SUCCESS (status))
goto out; goto out;
RtlCopyUnicodeString (&ntdev, &tgtdev); RtlCopyUnicodeString (&ntdev, &tgtdev);
@ -225,28 +214,28 @@ get_device_name (char *path)
/* Open the directory... */ /* Open the directory... */
InitializeObjectAttributes (&ntobj, &ntdevdir, OBJ_CASE_INSENSITIVE, InitializeObjectAttributes (&ntobj, &ntdevdir, OBJ_CASE_INSENSITIVE,
NULL, NULL); NULL, NULL);
status = ZwOpenDirectoryObject (&dir, DIRECTORY_QUERY, &ntobj); status = NtOpenDirectoryObject (&dir, DIRECTORY_QUERY, &ntobj);
if (!NT_SUCCESS (status)) if (!NT_SUCCESS (status))
break; break;
/* ...and scan it. */ /* ...and scan it. */
for (restart = TRUE, cont = 0; for (restart = TRUE, cont = 0;
NT_SUCCESS (ZwQueryDirectoryObject (dir, odi, 4096, TRUE, NT_SUCCESS (NtQueryDirectoryObject (dir, odi, 4096, TRUE,
restart, &cont, NULL)); restart, &cont, NULL));
restart = FALSE) restart = FALSE)
{ {
/* For each entry check if it's a symbolic link. */ /* For each entry check if it's a symbolic link. */
InitializeObjectAttributes (&ntobj, &odi->ObjectName, InitializeObjectAttributes (&ntobj, &odi->ObjectName,
OBJ_CASE_INSENSITIVE, dir, NULL); OBJ_CASE_INSENSITIVE, dir, NULL);
status = ZwOpenSymbolicLinkObject (&lnk, SYMBOLIC_LINK_QUERY, &ntobj); status = NtOpenSymbolicLinkObject (&lnk, SYMBOLIC_LINK_QUERY, &ntobj);
if (!NT_SUCCESS (status)) if (!NT_SUCCESS (status))
continue; continue;
tgtdev.Length = 0; tgtdev.Length = 0;
tgtdev.MaximumLength = 512; tgtdev.MaximumLength = 512;
/* If so, query it and compare the target of the symlink with the /* If so, query it and compare the target of the symlink with the
incoming device name. */ incoming device name. */
status = ZwQuerySymbolicLinkObject (lnk, &tgtdev, NULL); status = NtQuerySymbolicLinkObject (lnk, &tgtdev, NULL);
ZwClose (lnk); NtClose (lnk);
if (!NT_SUCCESS (status)) if (!NT_SUCCESS (status))
continue; continue;
if (tgtdev.Length /* There's actually a symlink pointing to an if (tgtdev.Length /* There's actually a symlink pointing to an
@ -293,12 +282,12 @@ get_device_name (char *path)
else else
memmove (ret, ret + 4, strlen (ret + 4) + 1); memmove (ret, ret + 4, strlen (ret + 4) + 1);
} }
ZwClose (dir); NtClose (dir);
goto out; goto out;
} }
} }
} }
ZwClose (dir); NtClose (dir);
} }
out: out:

View File

@ -33,6 +33,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <sys/param.h>
#include <windows.h> #include <windows.h>
#include "dumper.h" #include "dumper.h"
@ -380,7 +381,7 @@ dumper::dump_memory_region (asection * to, process_mem_region * memory)
while (size > 0) while (size > 0)
{ {
todo = min (size, PAGE_BUFFER_SIZE); todo = MIN (size, PAGE_BUFFER_SIZE);
if (!ReadProcessMemory (hProcess, pos, mem_buf, todo, &done)) if (!ReadProcessMemory (hProcess, pos, mem_buf, todo, &done))
{ {
deb_printf ("Failed to read process memory at %x(%x), error %ld\n", pos, todo, GetLastError ()); deb_printf ("Failed to read process memory at %x(%x), error %ld\n", pos, todo, GetLastError ());

View File

@ -25,6 +25,7 @@
*/ */
#include <errno.h> #include <errno.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <ctype.h> #include <ctype.h>
#include <getopt.h> #include <getopt.h>
#include <string.h> #include <string.h>
@ -34,7 +35,8 @@
#include <limits.h> #include <limits.h>
#include <sys/cygwin.h> #include <sys/cygwin.h>
#include <cygwin/version.h> #include <cygwin/version.h>
#define WINVER 0x0601 #define _WIN32_WINNT 0x0602
#define WINVER 0x0602
#include <windows.h> #include <windows.h>
#define LOCALE_ALIAS "/usr/share/locale/locale.alias" #define LOCALE_ALIAS "/usr/share/locale/locale.alias"

View File

@ -23,8 +23,8 @@ details. */
#include <sys/cygwin.h> #include <sys/cygwin.h>
#include <cygwin/version.h> #include <cygwin/version.h>
#include <psapi.h> #include <psapi.h>
#include <ddk/ntapi.h> #include <ntdef.h>
#include <ddk/winddk.h> #include <ntdll.h>
#include "loadlib.h" #include "loadlib.h"
/* Maximum possible path length under NT. There's no official define /* Maximum possible path length under NT. There's no official define
@ -347,7 +347,7 @@ main (int argc, char *argv[])
unicode_buf to have enough space for a maximum sized unicode_buf to have enough space for a maximum sized
UNICODE_STRING. */ UNICODE_STRING. */
if (uni->Length == 0) /* System process */ if (uni->Length == 0) /* System process */
win32path = L"System"; win32path = (wchar_t *) L"System";
else else
{ {
uni->Buffer[uni->Length / sizeof (WCHAR)] = L'\0'; uni->Buffer[uni->Length / sizeof (WCHAR)] = L'\0';

View File

@ -574,7 +574,7 @@ cmd_add ()
} }
extern "C" { extern "C" {
WINADVAPI LONG WINAPI (*regDeleteKeyEx)(HKEY, LPCWSTR, REGSAM, DWORD); LONG WINAPI (*regDeleteKeyEx)(HKEY, LPCWSTR, REGSAM, DWORD);
} }
int int
@ -587,7 +587,7 @@ cmd_remove ()
{ {
HMODULE mod = LoadLibrary ("advapi32.dll"); HMODULE mod = LoadLibrary ("advapi32.dll");
if (mod) if (mod)
regDeleteKeyEx = (WINADVAPI LONG WINAPI (*)(HKEY, LPCWSTR, REGSAM, DWORD)) GetProcAddress (mod, "RegDeleteKeyExW"); regDeleteKeyEx = (LONG WINAPI (*)(HKEY, LPCWSTR, REGSAM, DWORD)) GetProcAddress (mod, "RegDeleteKeyExW");
} }
if (regDeleteKeyEx) if (regDeleteKeyEx)
rv = (*regDeleteKeyEx) (key, value, wow64, 0); rv = (*regDeleteKeyEx) (key, value, wow64, 0);