/*++

Copyright (c) 1996  Microsoft Corporation

Module Name:

    resmon.idl

Abstract:

    Interface Description for resource monitor RPC interface

Author:

    John Vert (jvert) 2-Jan-1996

--*/

import "wtypes.idl";

cpp_quote("#define _RESAPI_")

//
// Interface Attributes
//
[
uuid(e76ea56d-453f-11cf-bfec-08002be23f2f),
version(2.0)
]
interface resmon
{


typedef [context_handle] void *RPC_RESID;

typedef HANDLE_PTR RM_NOTIFY_KEY;


RPC_RESID
RmCreateResource(
    [ in ] handle_t IDL_handle,
    [ in ] LPCWSTR DllName,
    [ in ] LPCWSTR ResourceType,
    [ in ] LPCWSTR ResourceName,
    [ in ] DWORD LooksAlivePoll,
    [ in ] DWORD IsAlivePoll,
    [ in ] RM_NOTIFY_KEY NotifyKey,
    [ in ] DWORD PendingTimeout,
    [ out ] LPDWORD Status
    );

void
RmCloseResource(
    [ in,out ] RPC_RESID *ResourceId
    );

error_status_t
RmChangeResourceParams(
    [ in ] RPC_RESID ResourceId,
    [ in ] DWORD LooksAlivePoll,
    [ in ] DWORD IsAlivePoll,
    [ in ] DWORD PendingTimeout
    );

error_status_t
RmOnlineResource(
    [ in ] RPC_RESID ResourceId,
    [ out ] DWORD  *pdwState
    );

error_status_t
RmOfflineResource(
    [ in ] RPC_RESID ResourceId,
    [ out ] DWORD   *pdwState
    );

void
RmTerminateResource(
    [ in ] RPC_RESID ResourceId
    );

error_status_t
RmArbitrateResource(
    [ in ] RPC_RESID ResourceId
    );

error_status_t
RmReleaseResource(
    [ in ] RPC_RESID ResourceId
    );

BOOL
RmNotifyChanges(
    [ in ] handle_t IDL_handle,
    [ out ] RM_NOTIFY_KEY *lpNotifyKey,
    [ out ] DWORD *lpNotifyEvent,
    [ out ] DWORD *lpCurrentState
    );

error_status_t
RmFailResource(
    [ in ] RPC_RESID ResourceId
    );


error_status_t
RmShutdownProcess(
    [ in ] handle_t IDL_handle
    );

error_status_t
RmResourceControl(
    [ in ] RPC_RESID ResourceId,
    [ in ] DWORD ControlCode,
    [ in, unique, size_is(InBufferSize) ] UCHAR *InBuffer,
    [ in ] DWORD InBufferSize,
    [ out, size_is(OutBufferSize), length_is(*BytesReturned) ] UCHAR *OutBuffer,
    [ in ] DWORD OutBufferSize,
    [ out ] LPDWORD BytesReturned,
    [ out ] LPDWORD Required
    );

error_status_t
RmResourceTypeControl(
    [ in ] handle_t IDL_handle,
    [ in ] LPCWSTR ResourceTypeName,
    [ in ] LPCWSTR DllName,
    [ in ] DWORD ControlCode,
    [ in, unique, size_is(InBufferSize) ] UCHAR *InBuffer,
    [ in ] DWORD InBufferSize,
    [ out, size_is(OutBufferSize), length_is(*BytesReturned) ] UCHAR *OutBuffer,
    [ in ] DWORD OutBufferSize,
    [ out ] LPDWORD BytesReturned,
    [ out ] LPDWORD Required
    );

error_status_t
RmLoadResourceTypeDll(
    [ in ] handle_t IDL_handle,
    [ in ] LPCWSTR ResourceTypeName,
    [ in ] LPCWSTR DllName
    );

}
