|
|
/*++
Copyright (c) 1997-1999 Hewlett-Packard Company & Microsoft Corporation
Module Name:
i2osmi.h
Abstract:
This module defines the NT types, constants, and functions that are exposed from the i2oexec driver.
Revision History:
--*/
#if !defined(I2OSMI_HDR)
#define I2OSMI_HDR
#if _MSC_VER > 1000
#pragma once
#endif
#include <devioctl.h>
#include "I2OUtil.h"
#include "I2OExec.h"
#pragma pack (push, 1)
//
// Parameter structure for Get/Set Parameters call.
//
typedef struct _I2O_PARAM_BLOCK { ULONG IOP; USHORT TargetTID; UCHAR ParamData[1]; } I2O_PARAM_BLOCK, *PI2O_PARAM_BLOCK;
//
// I2O IOP Descriptor
//
typedef struct _I2O_IOP_DESCRIPTOR { U32 IOPNumber; BOOLEAN (*SendHandler) (PVOID HandlerContext, PVOID MessageFrame); PVOID reserved; PVOID reserved1; PVOID HandlerContext; ULONG (*GetMFA)(PVOID HandlerContext, PVOID MFA, PVOID Buffer, ULONG Size); ULONG MaxMessageFrameSize; ULONG ExpectedLCTSize; PVOID AdapterObject; ULONG MaxInboundMFrames; ULONG InitialInboundMFrames; } I2O_IOP_DESCRIPTOR, *PI2O_IOP_DESCRIPTOR;
//
// I2O IOP and LCT Configuration data
//
typedef struct _I2O_DEVICE_DESCRIPTOR { I2O_IOP_DESCRIPTOR IOP; ULONG ChangeIndicator; I2O_LCT_ENTRY LCT; } I2O_DEVICE_DESCRIPTOR, *PI2O_DEVICE_DESCRIPTOR;
//
// I2O Query Configuration Record structure
//
#define I2O_CLASS_MATCH_ANY_BITS (((1<<I2O_CLASS_ID_SZ)-1) & I2O_CLASS_MATCH_ANYCLASS)
typedef struct _I2O_CONFIG_QUERY { ULONG IOPNumber; I2O_CLASS_ID ClassID; ULONG SubClassID; ULONG Index; } I2O_CONFIG_QUERY, *PI2O_CONFIG_QUERY;
//
// Useful define in get/set operations
//
typedef struct _I2O_PARAM_SCALAR_OPERATION { I2O_PARAM_OPERATIONS_LIST_HEADER OpList; I2O_PARAM_OPERATION_SPECIFIC_TEMPLATE OpBlock; } I2O_PARAM_SCALAR_OPERATION, *PI2O_PARAM_SCALAR_OPERATION; //
// Defines for the interface to the I2OExec driver.
//
#define I2O_GET_CONFIG_INFO 0xBA0
#define I2O_PRIVATE_MESSAGE_CODE 0xBB0
#define I2O_EXEC_REQUEST 0xBC0
#define I2O_PARAMS_GET_REQUEST 0xBD0
#define I2O_PARAMS_SET_REQUEST 0xBE0
#define I2O_GET_LCT 0xBF0
#define I2O_GET_IOPCOUNT 0xC00
#define I2O_GET_CONFIGDIALOG 0xC10
#define IOCTL_GET_CONFIG_INFO \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_GET_CONFIG_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PRIVATE_MESSAGE \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_PRIVATE_MESSAGE_CODE, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_EXEC_REQUEST \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_EXEC_REQUEST, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PARAMS_GET_REQUEST \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_PARAMS_GET_REQUEST, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PARAMS_SET_REQUEST \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_PARAMS_SET_REQUEST, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GET_LCT \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_GET_LCT, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PRIVATE_MSG \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_PRIVATE_MESSAGE, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GET_IOP_COUNT \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_GET_IOPCOUNT, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GET_CONFIG_DIALOG \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_GET_CONFIGDIALOG, METHOD_BUFFERED, FILE_ANY_ACCESS)
#pragma pack (pop)
#endif // I2OCONFIG_HDR
|