4 * Media changer driver interface
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
27 #pragma GCC system_header
39 #define CHANGERAPI DECLSPEC_EXPORT
41 #define CHANGERAPI DECLSPEC_IMPORT
49 #define DebugPrint(x) ChangerClassDebugPrint x
54 #define MAXIMUM_CHANGER_INQUIRY_DATA 252
59 ChangerClassAllocatePool(
60 IN POOL_TYPE PoolType
,
61 IN ULONG NumberOfBytes
);
64 ChangerClassDebugPrint(
65 ULONG DebugPrintLevel
,
78 ChangerClassSendSrbSynchronous(
79 IN PDEVICE_OBJECT DeviceObject
,
80 IN PSCSI_REQUEST_BLOCK Srb
,
83 IN BOOLEAN WriteToDevice
);
86 typedef NTSTATUS DDKAPI
87 (*CHANGER_INITIALIZE
)(
88 IN PDEVICE_OBJECT DeviceObject
);
91 (*CHANGER_EXTENSION_SIZE
)(
95 (*CHANGER_ERROR_ROUTINE
)(
96 PDEVICE_OBJECT DeviceObject
,
97 PSCSI_REQUEST_BLOCK Srb
,
101 typedef NTSTATUS DDKAPI
102 (*CHANGER_COMMAND_ROUTINE
)(
103 IN PDEVICE_OBJECT DeviceObject
,
106 typedef NTSTATUS DDKAPI
107 (*CHANGER_PERFORM_DIAGNOSTICS
)(
108 IN PDEVICE_OBJECT DeviceObject
,
109 OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError
);
111 typedef struct _MCD_INIT_DATA
{
113 CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize
;
114 CHANGER_INITIALIZE ChangerInitialize
;
115 CHANGER_ERROR_ROUTINE ChangerError
;
116 CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics
;
117 CHANGER_COMMAND_ROUTINE ChangerGetParameters
;
118 CHANGER_COMMAND_ROUTINE ChangerGetStatus
;
119 CHANGER_COMMAND_ROUTINE ChangerGetProductData
;
120 CHANGER_COMMAND_ROUTINE ChangerSetAccess
;
121 CHANGER_COMMAND_ROUTINE ChangerGetElementStatus
;
122 CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus
;
123 CHANGER_COMMAND_ROUTINE ChangerSetPosition
;
124 CHANGER_COMMAND_ROUTINE ChangerExchangeMedium
;
125 CHANGER_COMMAND_ROUTINE ChangerMoveMedium
;
126 CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit
;
127 CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags
;
128 } MCD_INIT_DATA
, *PMCD_INIT_DATA
;
133 ChangerClassInitialize(
134 IN PDRIVER_OBJECT DriverObject
,
135 IN PUNICODE_STRING RegistryPath
,
136 IN PMCD_INIT_DATA MCDInitData
);