]> sourceware.org Git - newlib-cygwin.git/commitdiff
* ntdll.h: Allow usage from plain C code.
authorCorinna Vinschen <corinna@vinschen.de>
Thu, 31 Mar 2011 16:08:01 +0000 (16:08 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Thu, 31 Mar 2011 16:08:01 +0000 (16:08 +0000)
(FSCTL_PIPE_IMPERSONATE): Define.
(enum _THREAD_INFORMATION_CLASS): Define.
(RTL_QUERY_REGISTRY_xxx): Define.
(RTL_REGISTRY_xxx): Define.
(PRTL_QUERY_REGISTRY_ROUTINE): Define.
(struct _RTL_QUERY_REGISTRY_TABLE): Define.
(enum _KEY_VALUE_INFORMATION_CLASS): Define.
(struct _KEY_VALUE_PARTIAL_INFORMATION): Define.
(NtAccessCheck): Declare.
(NtAllocateLocallyUniqueId): Declare.
(NtCreateKey): Declare.
(NtDuplicateToken): Declare.
(NtLoadKey): Declare.
(NtOpenKey): Declare.
(NtOpenProcessToken): Declare.
(NtOpenThreadToken): Declare.
(NtPrivilegeCheck): Declare.
(NtQueryInformationToken): Declare.
(NtQueryValueKey): Declare.
(NtSetInformationThread): Declare.
(NtSetInformationToken): Declare.
(NtSetValueKey): Declare.
(RtlAbsoluteToSelfRelativeSD): Declare.
(RtlAddAccessAllowedAce): Declare.
(RtlAddAccessDeniedAce): Declare.
(RtlAddAce): Declare.
(RtlCheckRegistryKey): Declare.
(RtlCopySid): Declare.
(RtlCreateAcl): Declare.
(RtlCreateRegistryKey): Declare.
(RtlCreateSecurityDescriptor): Declare.
(RtlEqualPrefixSid): Declare.
(RtlEqualSid): Declare.
(RtlFirstFreeAce): Declare.
(RtlGetAce): Declare.
(RtlGetDaclSecurityDescriptor): Declare.
(RtlGetGroupSecurityDescriptor): Declare.
(RtlGetOwnerSecurityDescriptor): Declare.
(RtlIdentifierAuthoritySid): Declare.
(RtlInitializeSid): Declare.
(RtlLengthSid): Declare.
(RtlQueryRegistryValues): Declare.
(RtlSetControlSecurityDescriptor): Declare.
(RtlSetDaclSecurityDescriptor): Declare.
(RtlSetGroupSecurityDescriptor): Declare.
(RtlSetOwnerSecurityDescriptor): Declare.
(RtlSubAuthorityCountSid): Declare.
(RtlSubAuthoritySid): Declare.
(RtlWriteRegistryValue): Declare.

winsup/cygwin/ChangeLog
winsup/cygwin/ntdll.h

index 07305fb877f047be6b71259b9a3e535ecb0e19ef..616e58190c462378d9e9fcaf373b7c9ad6b3da1d 100644 (file)
@@ -1,3 +1,56 @@
+2011-03-31  Corinna Vinschen  <corinna@vinschen.de>
+
+       * ntdll.h: Allow usage from plain C code.
+       (FSCTL_PIPE_IMPERSONATE): Define.
+       (enum _THREAD_INFORMATION_CLASS): Define.
+       (RTL_QUERY_REGISTRY_xxx): Define.
+       (RTL_REGISTRY_xxx): Define.
+       (PRTL_QUERY_REGISTRY_ROUTINE): Define.
+       (struct _RTL_QUERY_REGISTRY_TABLE): Define.
+       (enum _KEY_VALUE_INFORMATION_CLASS): Define.
+       (struct _KEY_VALUE_PARTIAL_INFORMATION): Define.
+       (NtAccessCheck): Declare.
+       (NtAllocateLocallyUniqueId): Declare.
+       (NtCreateKey): Declare.
+       (NtDuplicateToken): Declare.
+       (NtLoadKey): Declare.
+       (NtOpenKey): Declare.
+       (NtOpenProcessToken): Declare.
+       (NtOpenThreadToken): Declare.
+       (NtPrivilegeCheck): Declare.
+       (NtQueryInformationToken): Declare.
+       (NtQueryValueKey): Declare.
+       (NtSetInformationThread): Declare.
+       (NtSetInformationToken): Declare.
+       (NtSetValueKey): Declare.
+       (RtlAbsoluteToSelfRelativeSD): Declare.
+       (RtlAddAccessAllowedAce): Declare.
+       (RtlAddAccessDeniedAce): Declare.
+       (RtlAddAce): Declare.
+       (RtlCheckRegistryKey): Declare.
+       (RtlCopySid): Declare.
+       (RtlCreateAcl): Declare.
+       (RtlCreateRegistryKey): Declare.
+       (RtlCreateSecurityDescriptor): Declare.
+       (RtlEqualPrefixSid): Declare.
+       (RtlEqualSid): Declare.
+       (RtlFirstFreeAce): Declare.
+       (RtlGetAce): Declare.
+       (RtlGetDaclSecurityDescriptor): Declare.
+       (RtlGetGroupSecurityDescriptor): Declare.
+       (RtlGetOwnerSecurityDescriptor): Declare.
+       (RtlIdentifierAuthoritySid): Declare.
+       (RtlInitializeSid): Declare.
+       (RtlLengthSid): Declare.
+       (RtlQueryRegistryValues): Declare.
+       (RtlSetControlSecurityDescriptor): Declare.
+       (RtlSetDaclSecurityDescriptor): Declare.
+       (RtlSetGroupSecurityDescriptor): Declare.
+       (RtlSetOwnerSecurityDescriptor): Declare.
+       (RtlSubAuthorityCountSid): Declare.
+       (RtlSubAuthoritySid): Declare.
+       (RtlWriteRegistryValue): Declare.
+
 2011-03-31  Corinna Vinschen  <corinna@vinschen.de>
 
        * uinfo.cc (cygheap_user::init): Don't call GetUserName.  Fetch username
index 5f7f5cff4e948f42906cbc3cef82e96149d63025..757291439a568788e860981e48bdee84ed606afd 100644 (file)
@@ -873,6 +873,9 @@ typedef struct _FILE_MAILSLOT_SET_INFORMATION
   LARGE_INTEGER ReadTimeout;
 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
 
+#define FSCTL_PIPE_IMPERSONATE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, \
+                                       METHOD_BUFFERED, FILE_ANY_ACCESS)
+
 typedef VOID NTAPI (*PIO_APC_ROUTINE)(PVOID, PIO_STATUS_BLOCK, ULONG);
 
 typedef enum _EVENT_TYPE
@@ -892,12 +895,65 @@ typedef enum _EVENT_INFORMATION_CLASS
   EventBasicInformation = 0
 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
 
+typedef enum _THREAD_INFORMATION_CLASS
+{
+  ThreadImpersonationToken = 5
+} THREAD_INFORMATION_CLASS, *PTHREAD_INFORMATION_CLASS;
+
+#define RTL_QUERY_REGISTRY_SUBKEY 0x01
+#define RTL_QUERY_REGISTRY_TOPKEY 0x02
+#define RTL_QUERY_REGISTRY_REQUIRED 0x04
+#define RTL_QUERY_REGISTRY_NOVALUE 0x08
+#define RTL_QUERY_REGISTRY_NOEXPAND 0x10
+#define RTL_QUERY_REGISTRY_DIRECT 0x20
+#define RTL_QUERY_REGISTRY_DELETE 0x40
+#define RTL_QUERY_REGISTRY_NOSTRING 0x80
+
+#define RTL_REGISTRY_ABSOLUTE 0
+#define RTL_REGISTRY_SERVICES 1
+#define RTL_REGISTRY_CONTROL 2
+#define RTL_REGISTRY_WINDOWS_NT 3
+#define RTL_REGISTRY_DEVICEMAP 4
+#define RTL_REGISTRY_USER 5
+#define RTL_REGISTRY_HANDLE 0x40000000
+#define RTL_REGISTRY_OPTIONAL 0x80000000
+
+typedef NTSTATUS (*PRTL_QUERY_REGISTRY_ROUTINE)
+                (PWSTR, ULONG, PVOID, ULONG, PVOID, PVOID);
+
+typedef struct _RTL_QUERY_REGISTRY_TABLE
+{
+  PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
+  ULONG Flags;
+  PCWSTR Name;
+  PVOID EntryContext;
+  ULONG DefaultType;
+  PVOID DefaultData;
+  ULONG DefaultLength;
+} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
+
+typedef enum _KEY_VALUE_INFORMATION_CLASS
+{
+  KeyValueBasicInformation = 0,
+  KeyValueFullInformation,
+  KeyValuePartialInformation
+} KEY_VALUE_INFORMATION_CLASS, *PKEY_VALUE_INFORMATION_CLASS;
+typedef struct _KEY_VALUE_PARTIAL_INFORMATION
+{
+  ULONG TitleIndex;
+  ULONG Type;
+  ULONG DataLength;
+  UCHAR Data[1];
+} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
+
 /* Function declarations for ntdll.dll.  These don't appear in any
    standard Win32 header.  */
 
 #define NtCurrentProcess() ((HANDLE) 0xffffffff)
 #define NtCurrentThread()  ((HANDLE) 0xfffffffe)
 
+#ifdef __cplusplus
 /* This is the mapping of the KUSER_SHARED_DATA structure into the 32 bit
    user address space.  We need it here to access the current DismountCount. */
 static KUSER_SHARED_DATA &SharedUserData
@@ -905,13 +961,20 @@ static KUSER_SHARED_DATA &SharedUserData
 
 extern "C"
 {
+#endif
+  NTSTATUS NTAPI NtAccessCheck (PSECURITY_DESCRIPTOR, HANDLE, ACCESS_MASK,
+                               PGENERIC_MAPPING, PPRIVILEGE_SET, PULONG,
+                               PACCESS_MASK, PNTSTATUS);
   NTSTATUS NTAPI NtAdjustPrivilegesToken (HANDLE, BOOLEAN, PTOKEN_PRIVILEGES,
                                          ULONG, PTOKEN_PRIVILEGES, PULONG);
+  NTSTATUS NTAPI NtAllocateLocallyUniqueId (PLUID);
   NTSTATUS NTAPI NtAllocateUuids (PLARGE_INTEGER, PULONG, PULONG, PUCHAR);
   NTSTATUS NTAPI NtClose (HANDLE);
   NTSTATUS NTAPI NtCommitTransaction (HANDLE, BOOLEAN);
   NTSTATUS NTAPI NtCreateDirectoryObject (PHANDLE, ACCESS_MASK,
                                          POBJECT_ATTRIBUTES);
+  NTSTATUS NTAPI NtCreateKey (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, ULONG,
+                             PUNICODE_STRING, ULONG, PULONG);
   NTSTATUS NTAPI NtCreateEvent (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES,
                                EVENT_TYPE, BOOLEAN);
   NTSTATUS NTAPI NtCreateFile (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES,
@@ -934,9 +997,12 @@ extern "C"
   NTSTATUS NTAPI NtCreateTransaction (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES,
                                      LPGUID, HANDLE, ULONG, ULONG, ULONG,
                                      PLARGE_INTEGER, PUNICODE_STRING);
+  NTSTATUS NTAPI NtDuplicateToken (HANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES,
+                                  BOOLEAN, TOKEN_TYPE, PHANDLE);
   NTSTATUS NTAPI NtFsControlFile (HANDLE, HANDLE, PIO_APC_ROUTINE, PVOID,
                                  PIO_STATUS_BLOCK, ULONG, PVOID, ULONG,
                                  PVOID, ULONG);
+  NTSTATUS NTAPI NtLoadKey (POBJECT_ATTRIBUTES, POBJECT_ATTRIBUTES);
   NTSTATUS NTAPI NtLockVirtualMemory (HANDLE, PVOID *, ULONG *, ULONG);
   NTSTATUS NTAPI NtMapViewOfSection (HANDLE, HANDLE, PVOID *, ULONG, ULONG,
                                     PLARGE_INTEGER, PULONG, SECTION_INHERIT,
@@ -950,13 +1016,17 @@ extern "C"
   NTSTATUS NTAPI NtOpenEvent (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES);
   NTSTATUS NTAPI NtOpenFile (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES,
                             PIO_STATUS_BLOCK, ULONG, ULONG);
+  NTSTATUS NTAPI NtOpenKey (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES);
   NTSTATUS NTAPI NtOpenMutant (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES);
+  NTSTATUS NTAPI NtOpenProcessToken (HANDLE, ACCESS_MASK, PHANDLE);
+  NTSTATUS NTAPI NtOpenThreadToken (HANDLE, ACCESS_MASK, BOOLEAN, PHANDLE);
   NTSTATUS NTAPI NtOpenSection (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES);
   NTSTATUS NTAPI NtOpenSemaphore (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES);
   NTSTATUS NTAPI NtOpenSymbolicLinkObject (PHANDLE, ACCESS_MASK,
                                           POBJECT_ATTRIBUTES);
   /* WARNING!  Don't rely on the timestamp information returned by
      NtQueryAttributesFile.  Only the DOS file attribute info is reliable. */
+  NTSTATUS NTAPI NtPrivilegeCheck (HANDLE, PPRIVILEGE_SET, PBOOLEAN);
   NTSTATUS NTAPI NtQueryAttributesFile (POBJECT_ATTRIBUTES,
                                        PFILE_BASIC_INFORMATION);
   NTSTATUS NTAPI NtQueryDirectoryFile(HANDLE, HANDLE, PVOID, PVOID,
@@ -975,6 +1045,8 @@ extern "C"
                                         ULONG, FILE_INFORMATION_CLASS);
   NTSTATUS NTAPI NtQueryInformationProcess (HANDLE, PROCESSINFOCLASS,
                                            PVOID, ULONG, PULONG);
+  NTSTATUS NTAPI NtQueryInformationToken (HANDLE, TOKEN_INFORMATION_CLASS,
+                                         PVOID, ULONG, PULONG);
   NTSTATUS NTAPI NtQueryObject (HANDLE, OBJECT_INFORMATION_CLASS, VOID *,
                                ULONG, ULONG *);
   NTSTATUS NTAPI NtQuerySystemInformation (SYSTEM_INFORMATION_CLASS,
@@ -986,6 +1058,9 @@ extern "C"
                                        PSECURITY_DESCRIPTOR, ULONG, PULONG);
   NTSTATUS NTAPI NtQuerySymbolicLinkObject (HANDLE, PUNICODE_STRING, PULONG);
   NTSTATUS NTAPI NtQueryTimerResolution (PULONG, PULONG, PULONG);
+  NTSTATUS NTAPI NtQueryValueKey (HANDLE, PUNICODE_STRING,
+                                 KEY_VALUE_INFORMATION_CLASS, PVOID, ULONG,
+                                 PULONG);
   NTSTATUS NTAPI NtQueryVirtualMemory (HANDLE, PVOID, MEMORY_INFORMATION_CLASS,
                                       PVOID, ULONG, PULONG);
   NTSTATUS NTAPI NtQueryVolumeInformationFile (HANDLE, IO_STATUS_BLOCK *,
@@ -998,50 +1073,93 @@ extern "C"
   NTSTATUS NTAPI NtSetEaFile (HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG);
   NTSTATUS NTAPI NtSetInformationFile (HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG,
                                       FILE_INFORMATION_CLASS);
+  NTSTATUS NTAPI NtSetInformationThread (HANDLE, THREAD_INFORMATION_CLASS,
+                                        PVOID, ULONG);
+  NTSTATUS NTAPI NtSetInformationToken (HANDLE, TOKEN_INFORMATION_CLASS, PVOID,
+                                       ULONG);
   NTSTATUS NTAPI NtSetSecurityObject (HANDLE, SECURITY_INFORMATION,
                                      PSECURITY_DESCRIPTOR);
   NTSTATUS NTAPI NtSetTimerResolution (ULONG, BOOLEAN, PULONG);
+  NTSTATUS NTAPI NtSetValueKey (HANDLE, PUNICODE_STRING, ULONG, ULONG, PVOID,
+                               ULONG);
   NTSTATUS NTAPI NtUnlockVirtualMemory (HANDLE, PVOID *, ULONG *, ULONG);
   NTSTATUS NTAPI NtUnmapViewOfSection (HANDLE, PVOID);
   NTSTATUS NTAPI NtWriteFile (HANDLE, HANDLE, PIO_APC_ROUTINE, PVOID,
                              PIO_STATUS_BLOCK, PVOID, ULONG, PLARGE_INTEGER,
                              PULONG);
+  NTSTATUS NTAPI RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR,
+                                             PSECURITY_DESCRIPTOR, PULONG);
   VOID NTAPI RtlAcquirePebLock ();
+  NTSTATUS NTAPI RtlAddAccessAllowedAce (PACL, ULONG, ACCESS_MASK, PSID);
+  NTSTATUS NTAPI RtlAddAccessDeniedAce (PACL, ULONG, ACCESS_MASK, PSID);
+  NTSTATUS NTAPI RtlAddAce (PACL, ULONG, ULONG, PVOID, ULONG);
   PVOID NTAPI RtlAllocateHeap (PVOID, ULONG, SIZE_T);
   NTSTATUS NTAPI RtlAppendUnicodeToString (PUNICODE_STRING, PCWSTR);
   NTSTATUS NTAPI RtlAppendUnicodeStringToString (PUNICODE_STRING,
                                                 PUNICODE_STRING);
   NTSTATUS NTAPI RtlAnsiStringToUnicodeString (PUNICODE_STRING, PANSI_STRING,
                                               BOOLEAN);
+  NTSTATUS NTAPI RtlCheckRegistryKey (ULONG, PCWSTR);
   LONG NTAPI RtlCompareUnicodeString (PUNICODE_STRING, PUNICODE_STRING,
                                      BOOLEAN);
   NTSTATUS NTAPI RtlConvertSidToUnicodeString (PUNICODE_STRING, PSID, BOOLEAN);
   VOID NTAPI RtlCopyUnicodeString (PUNICODE_STRING, PUNICODE_STRING);
+  NTSTATUS NTAPI RtlCopySid (ULONG, PSID, PSID);
+  NTSTATUS NTAPI RtlCreateAcl (PACL, ULONG, ULONG);
+  NTSTATUS NTAPI RtlCreateRegistryKey (ULONG, PCWSTR);
+  NTSTATUS NTAPI RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR, ULONG);
   BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz (PUNICODE_STRING, PCSTR);
   NTSTATUS NTAPI RtlDowncaseUnicodeString (PUNICODE_STRING, PUNICODE_STRING,
                                           BOOLEAN);
   NTSTATUS NTAPI RtlEnterCriticalSection (PRTL_CRITICAL_SECTION);
+  BOOLEAN NTAPI RtlEqualPrefixSid (PSID, PSID);
+  BOOLEAN NTAPI RtlEqualSid (PSID, PSID);
   BOOLEAN NTAPI RtlEqualUnicodeString (PUNICODE_STRING, PUNICODE_STRING,
                                       BOOLEAN);
   VOID NTAPI RtlFreeAnsiString (PANSI_STRING);
   BOOLEAN NTAPI RtlFreeHeap (PVOID, ULONG, PVOID);
   VOID NTAPI RtlFreeOemString (POEM_STRING);
   VOID NTAPI RtlFreeUnicodeString (PUNICODE_STRING);
+  BOOLEAN NTAPI RtlFirstFreeAce (PACL, PVOID *);
+  NTSTATUS NTAPI RtlGetAce (PACL, ULONG, PVOID);
   HANDLE NTAPI RtlGetCurrentTransaction ();
+  NTSTATUS NTAPI RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR, PBOOLEAN,
+                                              PACL *, PBOOLEAN);
+  NTSTATUS NTAPI RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR, PSID *,
+                                               PBOOLEAN);
+  NTSTATUS NTAPI RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR, PSID *,
+                                               PBOOLEAN);
+  PSID_IDENTIFIER_AUTHORITY NTAPI RtlIdentifierAuthoritySid (PSID);
   VOID NTAPI RtlInitEmptyUnicodeString (PUNICODE_STRING, PCWSTR, USHORT);
+  NTSTATUS NTAPI RtlInitializeSid (PSID, PSID_IDENTIFIER_AUTHORITY, UCHAR);
   VOID NTAPI RtlInitUnicodeString (PUNICODE_STRING, PCWSTR);
   NTSTATUS NTAPI RtlIntegerToUnicodeString (ULONG, ULONG, PUNICODE_STRING);
   ULONG NTAPI RtlIsDosDeviceName_U (PCWSTR);
   NTSTATUS NTAPI RtlLeaveCriticalSection (PRTL_CRITICAL_SECTION);
+  ULONG NTAPI RtlLengthSid (PSID);
   ULONG NTAPI RtlNtStatusToDosError (NTSTATUS);
   NTSTATUS NTAPI RtlOemStringToUnicodeString (PUNICODE_STRING, POEM_STRING,
                                               BOOLEAN);
   BOOLEAN NTAPI RtlPrefixUnicodeString (PUNICODE_STRING, PUNICODE_STRING,
                                        BOOLEAN);
+  NTSTATUS NTAPI RtlQueryRegistryValues (ULONG, PCWSTR,
+                                        PRTL_QUERY_REGISTRY_TABLE, PVOID,
+                                        PVOID);
   VOID NTAPI RtlReleasePebLock ();
   VOID NTAPI RtlSecondsSince1970ToTime (ULONG, PLARGE_INTEGER);
   NTSTATUS NTAPI RtlSetCurrentDirectory_U (PUNICODE_STRING);
   BOOLEAN NTAPI RtlSetCurrentTransaction (HANDLE);
+  NTSTATUS NTAPI RtlSetControlSecurityDescriptor (PSECURITY_DESCRIPTOR,
+                                                 SECURITY_DESCRIPTOR_CONTROL,
+                                                 SECURITY_DESCRIPTOR_CONTROL);
+  NTSTATUS NTAPI RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR, BOOLEAN,
+                                              PACL, BOOLEAN);
+  NTSTATUS NTAPI RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR, PSID,
+                                               BOOLEAN);
+  NTSTATUS NTAPI RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR, PSID,
+                                               BOOLEAN);
+  PUCHAR NTAPI RtlSubAuthorityCountSid (PSID);
+  PULONG NTAPI RtlSubAuthoritySid (PSID, ULONG);
   NTSTATUS NTAPI RtlUnicodeStringToAnsiString (PANSI_STRING, PUNICODE_STRING,
                                               BOOLEAN);
   NTSTATUS NTAPI RtlUnicodeStringToOemString (PANSI_STRING, PUNICODE_STRING,
@@ -1049,7 +1167,10 @@ extern "C"
   WCHAR NTAPI RtlUpcaseUnicodeChar (WCHAR);
   NTSTATUS NTAPI RtlUpcaseUnicodeString (PUNICODE_STRING, PUNICODE_STRING,
                                         BOOLEAN);
+  NTSTATUS NTAPI RtlWriteRegistryValue (ULONG, PCWSTR, PCWSTR, ULONG, PVOID,
+                                       ULONG);
 
+#ifdef __cplusplus
   /* A few Rtl functions are either actually macros, or they just don't
      exist even though they would be a big help.  We implement them here,
      partly as inline functions. */
@@ -1147,4 +1268,5 @@ extern "C"
     return NtSetInformationFile(h, &io, &fbi, sizeof fbi, FileBasicInformation);
   }
 }
+#endif
 #endif /*_NTDLL_H*/
This page took 0.042821 seconds and 5 git commands to generate.