| /* |
| * mcd.h |
| * |
| * Media changer driver interface |
| * |
| * This file is part of the w32api package. |
| * |
| * Contributors: |
| * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> |
| * |
| * THIS SOFTWARE IS NOT COPYRIGHTED |
| * |
| * This source code is offered for use in the public domain. You may |
| * use, modify or distribute it freely. |
| * |
| * This code is distributed in the hope that it will be useful but |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| * DISCLAIMED. This includes but is not limited to warranties of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * |
| */ |
| |
| #ifndef __MCD_H |
| #define __MCD_H |
| |
| #include "srb.h" |
| #include "scsi.h" |
| #include "ntddchgr.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #if defined(_MCD_) |
| #define CHANGERAPI |
| #else |
| #define CHANGERAPI DECLSPEC_IMPORT |
| #endif |
| |
| #ifdef DebugPrint |
| #undef DebugPrint |
| #endif |
| |
| #if DBG |
| #define DebugPrint(x) ChangerClassDebugPrint x |
| #else |
| #define DebugPrint(x) |
| #endif |
| |
| #define MAXIMUM_CHANGER_INQUIRY_DATA 252 |
| |
| CHANGERAPI |
| PVOID |
| NTAPI |
| ChangerClassAllocatePool( |
| IN POOL_TYPE PoolType, |
| IN ULONG NumberOfBytes); |
| |
| VOID |
| ChangerClassDebugPrint( |
| ULONG DebugPrintLevel, |
| PCCHAR DebugMessage, |
| ...); |
| |
| CHANGERAPI |
| PVOID |
| NTAPI |
| ChangerClassFreePool( |
| IN PVOID PoolToFree); |
| |
| CHANGERAPI |
| NTSTATUS |
| NTAPI |
| ChangerClassSendSrbSynchronous( |
| IN PDEVICE_OBJECT DeviceObject, |
| IN PSCSI_REQUEST_BLOCK Srb, |
| IN PVOID Buffer, |
| IN ULONG BufferSize, |
| IN BOOLEAN WriteToDevice); |
| |
| |
| typedef NTSTATUS NTAPI |
| (*CHANGER_INITIALIZE)( |
| IN PDEVICE_OBJECT DeviceObject); |
| |
| typedef ULONG NTAPI |
| (*CHANGER_EXTENSION_SIZE)( |
| VOID); |
| |
| typedef VOID NTAPI |
| (*CHANGER_ERROR_ROUTINE)( |
| PDEVICE_OBJECT DeviceObject, |
| PSCSI_REQUEST_BLOCK Srb, |
| NTSTATUS *Status, |
| BOOLEAN *Retry); |
| |
| typedef NTSTATUS NTAPI |
| (*CHANGER_COMMAND_ROUTINE)( |
| IN PDEVICE_OBJECT DeviceObject, |
| IN PIRP Irp); |
| |
| typedef NTSTATUS NTAPI |
| (*CHANGER_PERFORM_DIAGNOSTICS)( |
| IN PDEVICE_OBJECT DeviceObject, |
| OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError); |
| |
| typedef struct _MCD_INIT_DATA { |
| ULONG InitDataSize; |
| CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize; |
| CHANGER_INITIALIZE ChangerInitialize; |
| CHANGER_ERROR_ROUTINE ChangerError; |
| CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics; |
| CHANGER_COMMAND_ROUTINE ChangerGetParameters; |
| CHANGER_COMMAND_ROUTINE ChangerGetStatus; |
| CHANGER_COMMAND_ROUTINE ChangerGetProductData; |
| CHANGER_COMMAND_ROUTINE ChangerSetAccess; |
| CHANGER_COMMAND_ROUTINE ChangerGetElementStatus; |
| CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus; |
| CHANGER_COMMAND_ROUTINE ChangerSetPosition; |
| CHANGER_COMMAND_ROUTINE ChangerExchangeMedium; |
| CHANGER_COMMAND_ROUTINE ChangerMoveMedium; |
| CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit; |
| CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags; |
| } MCD_INIT_DATA, *PMCD_INIT_DATA; |
| |
| CHANGERAPI |
| NTSTATUS |
| NTAPI |
| ChangerClassInitialize( |
| IN PDRIVER_OBJECT DriverObject, |
| IN PUNICODE_STRING RegistryPath, |
| IN PMCD_INIT_DATA MCDInitData); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __MCD_H */ |