/*
 * Copyright (C) Centeris Corporation 2004-2007
 * Copyright (C) Likewise Software 2007-
 * All rights reserved.
 *
 * Authors: Gerald Carter <gcarter@likewise.com>
 *
 *
 * Registry Service IDL
 *
 * Permission to use, copy, modify, and distribute these interface
 * definitions for any purpose is hereby granted without fee.
 *
 * This work is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 */

#ifndef __WINREG_IDL__
#define __WINREG_IDL__

[
    uuid(338cd001-2244-31f1-aaaa-900038001003),
    pointer_default(unique),
    version(1.0)
]


interface winreg
{
cpp_quote("#ifdef DCERPC_STUB_BUILD")

#include <lw/winreg.h>

cpp_quote("#else")
cpp_quote("#include <lw/winreg.h>")
cpp_quote("#endif /* DCERPC_STUB_BUILD */")

    void _winreg_Function0x0();
    void _winreg_Function0x1();

    /* Function 0x02 */
    WINERROR _RegOpenHKLM(
	[in] WCHAR *system_name,
	[in] UINT32 access_mask,
	[out,ref] REGISTRY_HANDLE *handle
    );

    void _winreg_Function0x3();
    void _winreg_Function0x4();

    /* Function 0x05 */
    WINERROR _RegCloseKey(
        [in,out,ref] REGISTRY_HANDLE *handle
    );

    void _winreg_Function0x6();
    void _winreg_Function0x7();
    void _winreg_Function0x8();
    void _winreg_Function0x9();
    void _winreg_Function0xa();
    void _winreg_Function0xb();
    void _winreg_Function0xc();
    void _winreg_Function0xd();
    void _winreg_Function0xe();

    /* Function 0x0f */
    WINERROR _RegOpenKey(
        [in] REGISTRY_HANDLE parent_handle,
	[in] RegString key_name,
        [in] UINT32 unknown,
	[in] UINT32 access_mask,
	[out,ref] REGISTRY_HANDLE *handle
    );

    void _winreg_Function0x10();

    /* Function 0x11 */
    WINERROR _RegQueryValue(
        [in] REGISTRY_HANDLE handle,
	[in] RegString value_name,
        [in,out,unique] UINT32 *type,
	[in,out,unique,size_is(*buffer_size),length_is(*buffer_len)] UINT8 *buffer,
	/* Work around the MIDL extension that allows [unique] pointers
	   for size_is() attribute values in conformant arrays */
	[in,out,ref] UINT32 *buffer_size_ptr,
	[in,out,ref] UINT32 *buffer_size,
	[in,out,ref] UINT32 *buffer_len_ptr,
	[in,out,ref] UINT32 *buffer_len
    );

    void _winreg_Function0x12();
    void _winreg_Function0x13();
    void _winreg_Function0x14();
    void _winreg_Function0x15();
    void _winreg_Function0x16();
    void _winreg_Function0x17();
    void _winreg_Function0x18();
    void _winreg_Function0x19();

    /* Function 0x1a */
    WINERROR _RegGetVersion(
        [in] REGISTRY_HANDLE handle,
	[out,ref] UINT32 *version
    );

    void _winreg_Function0x1b();
    void _winreg_Function0x1c();
    void _winreg_Function0x1d();
    void _winreg_Function0x1e();
    void _winreg_Function0x1f();
    void _winreg_Function0x20();
    void _winreg_Function0x21();
    void _winreg_Function0x22();
}

#endif /* __WINREG_IDL__ */
