#include <stdio.h>
#include <stdlib.h>
#include <typedefs.h>
#include <cmlib.h>
#include <infhost.h>
#include "reginf.h"
#include "cmi.h"
#include "registry.h"
#include "binhive.h"
Go to the source code of this file.
|
| unsigned char | BitScanForward (ULONG *Index, unsigned long Mask) |
| |
| unsigned char | BitScanReverse (ULONG *const Index, unsigned long Mask) |
| |
| VOID NTAPI | RtlInitUnicodeString (IN OUT PUNICODE_STRING DestinationString, IN PCWSTR SourceString) |
| |
| WCHAR NTAPI | RtlUpcaseUnicodeChar (IN WCHAR Source) |
| |
| LONG WINAPI | RegQueryValueExW (IN HKEY hKey, IN LPCWSTR lpValueName, IN PULONG lpReserved, OUT PULONG lpType OPTIONAL, OUT PUCHAR lpData OPTIONAL, IN OUT PULONG lpcbData OPTIONAL) |
| |
| LONG WINAPI | RegSetValueExW (IN HKEY hKey, IN LPCWSTR lpValueName OPTIONAL, IN ULONG Reserved, IN ULONG dwType, IN const UCHAR *lpData, IN ULONG cbData) |
| |
| LONG WINAPI | RegCloseKey (IN HKEY hKey) |
| |
| LONG WINAPI | RegDeleteKeyW (IN HKEY hKey, IN LPCWSTR lpSubKey) |
| |
| LONG WINAPI | RegDeleteValueW (IN HKEY hKey, IN LPCWSTR lpValueName OPTIONAL) |
| |
| LONG WINAPI | RegCreateKeyW (IN HKEY hKey, IN LPCWSTR lpSubKey, OUT PHKEY phkResult) |
| |
| LONG WINAPI | RegOpenKeyW (IN HKEY hKey, IN LPCWSTR lpSubKey, OUT PHKEY phkResult) |
| |
◆ _countof
◆ ABS_VALUE
◆ CMLIB_HOST
◆ OBJ_NAME_PATH_SEPARATOR
◆ PAGED_CODE
◆ RtlFillMemoryUlong
◆ STATUS_OBJECT_NAME_NOT_FOUND
◆ STATUS_SUCCESS
◆ STATUS_UNSUCCESSFUL
◆ HKEY
◆ LPSECURITY_ATTRIBUTES
◆ PHKEY
◆ REGSAM
◆ BitScanForward()
Definition at line 177 of file rtl.c.
178{
181 {
183 ++(*Index);
184 }
186}
_In_ WDFCOLLECTION _In_ ULONG Index
◆ BitScanReverse()
Definition at line 188 of file rtl.c.
189{
191 while (
Mask && ((
Mask & (1 << 31)) == 0))
192 {
194 ++(*Index);
195 }
197}
◆ RegCloseKey()
◆ RegCreateKeyW()
◆ RegDeleteKeyW()
Definition at line 552 of file registry.c.
555{
564
565 if (lpSubKey)
566 {
569 return rc;
570 }
571 else
572 {
575 }
576
577
579 {
580
582 goto Quit;
583 }
584
585
587 Hive = &
Key->RegistryHive->Hive;
588
589
591 if (!KeyNode)
592 {
594 goto Quit;
595 }
596
598
599
602 {
603
604 ParentCell = KeyNode->
Parent;
607 {
608
611 {
612
614
615
617
618
620 }
621
623 }
624 else
625 {
626
628 }
629 }
630 else
631 {
632
634 }
635
636
638
639Quit:
640 if (lpSubKey)
642
643 return rc;
644}
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
#define RegCloseKey(hKey)
struct _CM_KEY_NODE * PCM_KEY_NODE
#define CM_KEY_NODE_SIGNATURE
NTSTATUS NTAPI CmpFreeKeyByCell(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN BOOLEAN Unlink)
#define HvReleaseCell(Hive, Cell)
BOOLEAN CMAPI HvIsCellDirty(IN PHHIVE Hive, IN HCELL_INDEX Cell)
#define HvGetCell(Hive, Cell)
#define NT_SUCCESS(StatCode)
#define ERROR_ACCESS_DENIED
#define KeQuerySystemTime(t)
ULONG SubKeyCounts[HTYPE_COUNT]
#define ERROR_GEN_FAILURE
◆ RegDeleteValueW()
Definition at line 901 of file registry.c.
904{
914
916 if (!KeyNode)
918
920
921
925 &ValueNameString,
926 &ChildIndex,
927 &CellIndex))
928 {
929
931 }
933 {
935 goto Quit;
936 }
937
938
942
943
946
947
949 {
950
952 goto Quit;
953 }
954
955
958
959
962 {
963
965 goto Quit;
966 }
967
968
970 {
971
973 goto Quit;
974 }
975
976
978
979
981
982
984 {
985
988 }
989
990
992
993Quit:
994
995 if (ValueCell)
996 {
997
1000 }
1001
1002
1003 if (KeyNode)
1005
1006 return rc;
1007}
struct _CM_KEY_VALUE * PCM_KEY_VALUE
BOOLEAN NTAPI CmpMarkValueDataDirty(IN PHHIVE Hive, IN PCM_KEY_VALUE Value)
BOOLEAN NTAPI CmpFreeValue(IN PHHIVE Hive, IN HCELL_INDEX Cell)
NTSTATUS NTAPI CmpRemoveValueFromList(IN PHHIVE Hive, IN ULONG Index, IN OUT PCHILD_LIST ChildList)
BOOLEAN CMAPI HvMarkCellDirty(PHHIVE RegistryHive, HCELL_INDEX CellOffset, BOOLEAN HoldingLock)
BOOLEAN NTAPI CmpFindNameInList(IN PHHIVE Hive, IN PCHILD_LIST ChildList, IN PCUNICODE_STRING Name, OUT PULONG ChildIndex OPTIONAL, OUT PHCELL_INDEX CellIndex)
#define ERROR_FILE_NOT_FOUND
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
LARGE_INTEGER LastWriteTime
#define ERROR_NO_SYSTEM_RESOURCES
#define ERROR_NO_LOG_SPACE
◆ RegOpenKeyW()
◆ RegQueryValueExW()
Definition at line 862 of file registry.c.
869{
876
878 if (!KeyNode)
880
882
883
888
889
892
894
896
898}
HCELL_INDEX NTAPI CmpFindValueByName(IN PHHIVE Hive, IN PCM_KEY_NODE KeyNode, IN PCUNICODE_STRING Name)
_Must_inspect_result_ _In_opt_ WDFKEY ParentKey
◆ RegSetValueExW()
Definition at line 656 of file registry.c.
663{
671
675
677 {
679
680
683
685
686
687
688
691
692 DPRINT1(
"Save link to registry\n");
694 }
695
698
699 Hive = &
Key->RegistryHive->Hive;
700
702 if (!KeyNode)
704
706
707
709
710
714 &ValueNameString,
715 &ChildIndex,
716 &CellIndex))
717 {
718
720
722 }
724 {
725
727 KeyNode,
728 ChildIndex,
729 &ValueNameString,
730 &ValueCell,
731 &CellIndex);
732 }
733 else
734 {
735
739 }
740
741
742
745
746
749 {
751 if (!DataCell)
753
755 }
756 else
757 {
759 DataCellSize = 0;
760 }
761
763 {
764
766 if (DataCell)
768
771 ValueCell->
Type = dwType;
772 }
773 else
774 {
775 if (
cbData > DataCellSize)
776 {
777
778
780
782
785 {
786 DPRINT(
"HvAllocateCell() has failed!\n");
788 }
789
790 if (DataCell)
792
793 ValueCell->
Data = NewOffset;
795 }
796
797
800 ValueCell->
Type = dwType;
802 }
803
805
806
809
810
813
814
816
818}
#define CM_KEY_VALUE_SPECIAL_SIZE
NTSTATUS CmiAddValueKey(IN PCMHIVE RegistryHive, IN PCM_KEY_NODE Parent, IN ULONG ChildIndex, IN PCUNICODE_STRING ValueName, OUT PCM_KEY_VALUE *pValueCell, OUT HCELL_INDEX *pValueCellOffset)
VOID CMAPI HvFreeCell(PHHIVE RegistryHive, HCELL_INDEX CellOffset)
LONG CMAPI HvGetCellSize(PHHIVE RegistryHive, PVOID Cell)
HCELL_INDEX CMAPI HvAllocateCell(PHHIVE RegistryHive, ULONG Size, HSTORAGE_TYPE Storage, IN HCELL_INDEX Vicinity)
#define ERROR_INVALID_FUNCTION
#define ERROR_INVALID_PARAMETER
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
#define RtlCopyMemory(Destination, Source, Length)
#define STATUS_INSUFFICIENT_RESOURCES
◆ RtlInitUnicodeString()
Definition at line 641 of file unicode.c.
644{
647
649 {
652
657 }
658 else
659 {
662 }
663
665}
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define __analysis_assume(expr)
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
_Out_ _Inout_ POEM_STRING DestinationString
unsigned short MaximumLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Referenced by RtlAppendUnicodeToString().
◆ RtlUpcaseUnicodeChar()
Definition at line 721 of file nls.c.
722{
724
726}
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
WCHAR NTAPI RtlpUpcaseUnicodeChar(IN WCHAR Source)
Referenced by RtlCompareUnicodeString().
◆ CmiHiveListHead