Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[driver] Add reg_fetch_dword()
Signed-off-by: Michael Brown <mbrown@fensystems.co.uk>
  • Loading branch information
mcb30 committed Aug 15, 2011
1 parent 5272575 commit a8a80f2
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
36 changes: 35 additions & 1 deletion src/driver/registry.c
Expand Up @@ -251,6 +251,40 @@ NTSTATUS reg_fetch_multi_sz ( HANDLE reg_key, LPCWSTR value_name,
return status;
}

/**
* Fetch registry dword value
*
* @v reg_key Registry key
* @v value_name Registry value name
* @v value Dword value to fill in
* @ret ntstatus NT status
*/
NTSTATUS reg_fetch_dword ( HANDLE reg_key, LPCWSTR value_name, ULONG *value ) {
PKEY_VALUE_PARTIAL_INFORMATION kvi;
NTSTATUS status;

/* Fetch key value information */
status = reg_fetch_kvi ( reg_key, value_name, &kvi );
if ( ! NT_SUCCESS ( status ) )
goto err_reg_fetch_kvi;

/* Sanity check */
if ( kvi->DataLength != sizeof ( *value ) ) {
DbgPrint ( "Bad size %x for dword \"%S\"\n",
kvi->DataLength, value_name );
status = STATUS_UNSUCCESSFUL;
goto err_datalength;
}

/* Copy value */
RtlCopyMemory ( value, kvi->Data, sizeof ( *value ) );

err_datalength:
ExFreePool ( kvi );
err_reg_fetch_kvi:
return status;
}

/**
* Store registry string value
*
Expand Down Expand Up @@ -348,7 +382,7 @@ NTSTATUS reg_store_multi_sz ( HANDLE reg_key, LPCWSTR value_name, ... ) {
*
* @v reg_key Registry key
* @v value_name Registry value name
* @v value String value to store, or NULL
* @v value Dword value to store
* @ret ntstatus NT status
*/
NTSTATUS reg_store_dword ( HANDLE reg_key, LPCWSTR value_name, ULONG value ) {
Expand Down
2 changes: 2 additions & 0 deletions src/driver/registry.h
Expand Up @@ -27,6 +27,8 @@ extern NTSTATUS reg_fetch_sz ( HANDLE reg_key, LPCWSTR value_name,
LPWSTR *value );
extern NTSTATUS reg_fetch_multi_sz ( HANDLE reg_key, LPCWSTR value_name,
LPWSTR **values );
extern NTSTATUS reg_fetch_dword ( HANDLE reg_key, LPCWSTR value_name,
ULONG *value );
extern NTSTATUS reg_store_sz ( HANDLE reg_key, LPCWSTR value_name,
LPWSTR value );
extern NTSTATUS reg_store_multi_sz ( HANDLE reg_key, LPCWSTR value_name, ... );
Expand Down

0 comments on commit a8a80f2

Please sign in to comment.