[driver] Add reg_fetch_dword()

Signed-off-by: Michael Brown <mbrown@fensystems.co.uk>
This commit is contained in:
Michael Brown 2011-08-15 18:30:17 +01:00
parent 52725755ef
commit a8a80f2f96
2 changed files with 37 additions and 1 deletions

View File

@ -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
*
@ -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 ) {

View File

@ -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, ... );