231{
250 PCHAR CurrentVersion;
253
254
256 L"\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\"
257 L"Control\\Session Manager\\Memory Management");
265 {
266
268
269
273 0,
275 &HavePae,
276 sizeof(HavePae));
277
278
280 }
281
282
284 L"\\Registry\\Machine\\Hardware\\Description\\System");
293
294
296 L"\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\"
297 L"Control\\BIOSINFO");
306 0,
311 {
314 }
315
316
321 SystemHandle,
326 0,
328 0,
331
332
334 {
335
340 {
341
343 }
344
345
347 {
348#ifdef _M_AMD64
350#endif
351
353
354
361
362#if defined(_M_IX86)
363
365 {
366
368 "80%u86-%c%x",
372 }
373 else
374 {
375
378 "x86",
382 }
383#elif defined(_M_AMD64)
385 {
386
387 FamilyId = "VIA64";
388 }
390 {
391
392 FamilyId = "AMD64";
393 }
394 else
395 {
396
397 FamilyId = "EM64T";
398 }
399
400
403 FamilyId,
407#else
408#error Unknown architecture
409#endif
410
411
413
414
416 SystemHandle,
419 0xFFFFFFFF,
420 IndexTable);
422 {
426 }
427
428
430 {
431
438
439
441
442
444
445
447 SystemHandle,
448 &FpuHandle,
450 0xFFFFFFFF,
451 IndexTable);
453 {
454
459 }
460
461
463
464
467 {
468
470 }
471 else
472 {
473
474 KiCpuId(&CpuInfo, 0x80000000);
475 ExtendedId = CpuInfo.
Eax;
476 if (ExtendedId >= 0x80000004)
477 {
478
479 PartialString = CpuString;
480 for (ExtendedId = 2; ExtendedId <= 4; ExtendedId++)
481 {
482
483 KiCpuId(&CpuInfo, 0x80000000 | ExtendedId);
484 ((
PULONG)PartialString)[0] = CpuInfo.
Eax;
485 ((
PULONG)PartialString)[1] = CpuInfo.
Ebx;
486 ((
PULONG)PartialString)[2] = CpuInfo.
Ecx;
487 ((
PULONG)PartialString)[3] = CpuInfo.
Edx;
488
489
490 PartialString += 16;
491 }
492
493
495 }
496 }
497
498
500
501
502 if (PartialString)
503 {
504
507 {
508
512 0,
516
517
520
521
523 }
524 }
525
526
528 {
529
532 {
533
537 0,
541
542
544 }
545 }
546
547
549 {
550
554 0,
558 }
559
560
562 {
563
567 0,
571 }
572
573
575 {
576
580 0,
584 }
585
586
588
589
590 }
591 }
592
593
595 }
596
597
600 &SectionName,
608 {
609
610
613
614 goto Quickie;
615 }
616
617
619 Status = ZwMapViewOfSection(SectionHandle,
622 0,
624 &ViewBase,
630 {
631
632 VideoRomBase = 0xC0000;
633 }
634 else
635 {
636
639
640
641 VideoRomBase &= 0xFFFF8000;
642 if (VideoRomBase < 0xC0000) VideoRomBase = 0xC0000;
643
644
646 }
647
648
650
651
655
656 Status = ZwMapViewOfSection(SectionHandle,
659 0,
661 &ViewBase,
667 {
668
670 {
671
674 {
675
679 0,
683
684
686 }
687
688 if (BiosHandle)
689 {
690
693
694
698 {
699
702 0,
706
707
710
711
713 }
714
715
717 }
718 }
719
720
722 {
723
725 do
726 {
727
731 break;
732
733
736
737
739
740
743 {
744
745 break;
746 }
747
748
750
751
753
754
756 {
757
760
761
765 0,
769
770
773 }
774 }
775
776
778 }
779
780
784
785 Status = ZwMapViewOfSection(SectionHandle,
788 0,
790 &ViewBase,
796 {
797
799 {
800
803 {
804
808 0,
812
813
816
817
819 }
820 }
821
822
824 {
825
827 do
828 {
829
832 break;
833
834
837
838
840
841
844 {
845
846 break;
847 }
848
849
851
852
854
855
857 {
858
861
862
866 0,
870
871
874 }
875 }
876
877
879 }
880
881
883
884
886
887Quickie:
888
891}
UNICODE_STRING KeRosVideoBiosVersion
UNICODE_STRING KeRosProcessorName
UNICODE_STRING KeRosBiosVersion
UNICODE_STRING KeRosBiosDate
UNICODE_STRING KeRosVideoBiosDate
NTSTATUS NTAPI CmpInitializeRegistryNode(IN PCONFIGURATION_COMPONENT_DATA CurrentEntry, IN HANDLE NodeHandle, OUT PHANDLE NewHandle, IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, IN PUSHORT DeviceIndexTable)
PCM_FULL_RESOURCE_DESCRIPTOR CmpConfigurationData
ULONG CmpConfigurationAreaSize
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
_ACRTIMP size_t __cdecl strlen(const char *)
#define ExAllocatePoolWithTag(hernya, size, tag)
BOOLEAN NTAPI CmpGetBiosDate(IN PCHAR BiosStart, IN ULONG BiosLength, IN PCHAR BiosDate, IN BOOLEAN FromBios)
BOOLEAN NTAPI CmpGetBiosVersion(IN PCHAR BiosStart, IN ULONG BiosLength, IN PCHAR BiosVersion)
#define ExFreePoolWithTag(_P, _T)
#define InitializeObjectAttributes(p, n, a, r, s)
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
FORCEINLINE KAFFINITY AFFINITY_MASK(ULONG Index)
NTSYSAPI NTSTATUS NTAPI ZwOpenSection(_Out_ PHANDLE SectionHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID * BaseAddress
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T ViewSize
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
NTSYSAPI NTSTATUS NTAPI NtSetValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
#define SECTION_ALL_ACCESS
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define NtCurrentProcess()
#define REG_OPTION_NON_VOLATILE
#define REG_CREATED_NEW_KEY
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
NTSTATUS NTAPI NtCreateKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL)
_In_ ULONG _In_ ULONG _In_ ULONG Length
PKPRCB KiProcessorBlock[]
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
CONFIGURATION_COMPONENT ComponentEntry
CONFIGURATION_CLASS Class
LARGE_INTEGER UpdateSignature
VOID NTAPI KeSetSystemAffinityThread(IN KAFFINITY Affinity)
VOID NTAPI KeRevertToUserAffinityThread(VOID)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName