#ifndef _IMBDrvMOF_h_
#define _IMBDrvMOF_h_

// ID_MOF_C_mvDeviceIoControl_Args - ID_MOF_C_mvDeviceIoControl_Args
// IMB Driver MOF Class DeviceIoControl
#define ID_MOF_C_mvDeviceIoControl_ArgsGuid \
    { 0x87cdef14,0xacd1,0x11d3, { 0x81,0x63,0x00,0x04,0xac,0xdd,0x00,0x18 } }

DEFINE_GUID(ID_MOF_C_mvDeviceIoControl_Args_GUID, \
            0x87cdef14,0xacd1,0x11d3,0x81,0x63,0x00,0x04,0xac,0xdd,0x00,0x18);


typedef struct _ID_MOF_C_mvDeviceIoControl_Args
{
    // Operation control code
    ULONG u32_dwIoControlCode;
    #define ID_MOF_C_mvDeviceIoControl_Args_u32_dwIoControlCode_SIZE sizeof(ULONG)
    #define ID_MOF_C_mvDeviceIoControl_Args_u32_dwIoControlCode_ID 1

    // Input data buffer
    ULONGLONG u64_lpInBuffer;
    #define ID_MOF_C_mvDeviceIoControl_Args_u64_lpInBuffer_SIZE sizeof(ULONGLONG)
    #define ID_MOF_C_mvDeviceIoControl_Args_u64_lpInBuffer_ID 2

    // Size of input data buffer
    ULONG u32_dwInBufferSize;
    #define ID_MOF_C_mvDeviceIoControl_Args_u32_dwInBufferSize_SIZE sizeof(ULONG)
    #define ID_MOF_C_mvDeviceIoControl_Args_u32_dwInBufferSize_ID 3

    // Output data buffer
    ULONGLONG u64_lpOutBuffer;
    #define ID_MOF_C_mvDeviceIoControl_Args_u64_lpOutBuffer_SIZE sizeof(ULONGLONG)
    #define ID_MOF_C_mvDeviceIoControl_Args_u64_lpOutBuffer_ID 4

    // Size of output data buffer
    ULONG u32_dwOutBufferSize;
    #define ID_MOF_C_mvDeviceIoControl_Args_u32_dwOutBufferSize_SIZE sizeof(ULONG)
    #define ID_MOF_C_mvDeviceIoControl_Args_u32_dwOutBufferSize_ID 5

    // Byte actually returned
    ULONGLONG u64_lpBytesReturned;
    #define ID_MOF_C_mvDeviceIoControl_Args_u64_lpBytesReturned_SIZE sizeof(ULONGLONG)
    #define ID_MOF_C_mvDeviceIoControl_Args_u64_lpBytesReturned_ID 6

} ID_MOF_C_mvDeviceIoControl_Args, *PID_MOF_C_mvDeviceIoControl_Args;

// ID_MOF_C_DeviceIoControl - ID_MOF_C_DeviceIoControl
// IMB Driver MOF Class DeviceIoControl
#define ID_MOF_C_DeviceIoControlGuid \
    { 0x87cdef15,0xacd1,0x11d3, { 0x81,0x63,0x00,0x04,0xac,0xdd,0x00,0x18 } }

DEFINE_GUID(ID_MOF_C_DeviceIoControl_GUID, \
            0x87cdef15,0xacd1,0x11d3,0x81,0x63,0x00,0x04,0xac,0xdd,0x00,0x18);

//
// Method id definitions for ID_MOF_C_DeviceIoControl
#define ID_MOF_mvDeviceIoControl     1

// Warning: Header for class ID_MOF_C_DeviceIoControl cannot be created
typedef struct _ID_MOF_C_DeviceIoControl
{
    char VariableData[1];

} ID_MOF_C_DeviceIoControl, *PID_MOF_C_DeviceIoControl;

#endif
