#define FLG_ADDREG_TYPE_MASK (0xFFFF0000 | FLG_ADDREG_BINVALUETYPE)
#endif
+#ifdef _M_IX86
+#define Architecture L"x86"
+#elif defined(_M_AMD64)
+#define Architecture L"amd64"
+#elif defined(_M_IA64)
+#define Architecture L"ia64"
+#elif defined(_M_ARM)
+#define Architecture L"arm"
+#elif defined(_M_PPC)
+#define Architecture L"ppc"
+#endif
+
#include <pshpack1.h>
typedef struct _REG_DISK_MOUNT_INFO
if (Type == REG_DWORD)
{
- ULONG dw = Str ? wcstol (Str, NULL, 0) : 0;
+ ULONG dw = Str ? wcstoul (Str, NULL, 0) : 0;
DPRINT("setting dword %wZ to %lx\n", ValueName, dw);
UNICODE_STRING LocalKeyName;
ULONG Disposition;
NTSTATUS Status;
- ULONG FullNameLength;
- ULONG Length;
+ USHORT FullNameLength;
PWCHAR Ptr;
HANDLE LocalKeyHandle;
RtlCreateUnicodeString (&LocalKeyName,
ObjectAttributes->ObjectName->Buffer);
LocalObjectAttributes.ObjectName = &LocalKeyName;
- FullNameLength = LocalKeyName.Length / sizeof(WCHAR);
+ FullNameLength = LocalKeyName.Length;
/* Remove the last part of the key name and try to create the key again. */
while (Status == STATUS_OBJECT_NAME_NOT_FOUND)
}
/* Add removed parts of the key name and create them too. */
- Length = wcslen (LocalKeyName.Buffer);
while (TRUE)
{
- if (Length == FullNameLength)
+ if (LocalKeyName.Length == FullNameLength)
{
Status = STATUS_SUCCESS;
*KeyHandle = LocalKeyHandle;
}
NtClose (LocalKeyHandle);
- LocalKeyName.Buffer[Length] = L'\\';
- Length = wcslen (LocalKeyName.Buffer);
- LocalKeyName.Length = Length * sizeof(WCHAR);
+ LocalKeyName.Buffer[LocalKeyName.Length / sizeof(WCHAR)] = L'\\';
+ LocalKeyName.Length = wcslen (LocalKeyName.Buffer) * sizeof(WCHAR);
Status = NtCreateKey (&LocalKeyHandle,
KEY_ALL_ACCESS,
DPRINT1("registry_callback() failed\n");
}
+ if (!registry_callback (hInf, L"AddReg.NT" Architecture, FALSE))
+ {
+ DPRINT1("registry_callback() failed\n");
+ }
+
InfCloseFile (hInf);
return TRUE;