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.
37 #define CHANGERAPI DECLSPEC_IMPORT
45 #define DebugPrint(x) ChangerClassDebugPrint x
50 #define MAXIMUM_CHANGER_INQUIRY_DATA 252
55 ChangerClassAllocatePool(
56 IN POOL_TYPE PoolType
,
57 IN ULONG NumberOfBytes
);
60 ChangerClassDebugPrint(
61 ULONG DebugPrintLevel
,
74 ChangerClassSendSrbSynchronous(
75 IN PDEVICE_OBJECT DeviceObject
,
76 IN PSCSI_REQUEST_BLOCK Srb
,
79 IN BOOLEAN WriteToDevice
);
82 typedef NTSTATUS NTAPI
83 (*CHANGER_INITIALIZE
)(
84 IN PDEVICE_OBJECT DeviceObject
);
87 (*CHANGER_EXTENSION_SIZE
)(
91 (*CHANGER_ERROR_ROUTINE
)(
92 PDEVICE_OBJECT DeviceObject
,
93 PSCSI_REQUEST_BLOCK Srb
,
97 typedef NTSTATUS NTAPI
98 (*CHANGER_COMMAND_ROUTINE
)(
99 IN PDEVICE_OBJECT DeviceObject
,
102 typedef NTSTATUS NTAPI
103 (*CHANGER_PERFORM_DIAGNOSTICS
)(
104 IN PDEVICE_OBJECT DeviceObject
,
105 OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError
);
107 typedef struct _MCD_INIT_DATA
{
109 CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize
;
110 CHANGER_INITIALIZE ChangerInitialize
;
111 CHANGER_ERROR_ROUTINE ChangerError
;
112 CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics
;
113 CHANGER_COMMAND_ROUTINE ChangerGetParameters
;
114 CHANGER_COMMAND_ROUTINE ChangerGetStatus
;
115 CHANGER_COMMAND_ROUTINE ChangerGetProductData
;
116 CHANGER_COMMAND_ROUTINE ChangerSetAccess
;
117 CHANGER_COMMAND_ROUTINE ChangerGetElementStatus
;
118 CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus
;
119 CHANGER_COMMAND_ROUTINE ChangerSetPosition
;
120 CHANGER_COMMAND_ROUTINE ChangerExchangeMedium
;
121 CHANGER_COMMAND_ROUTINE ChangerMoveMedium
;
122 CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit
;
123 CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags
;
124 } MCD_INIT_DATA
, *PMCD_INIT_DATA
;
129 ChangerClassInitialize(
130 IN PDRIVER_OBJECT DriverObject
,
131 IN PUNICODE_STRING RegistryPath
,
132 IN PMCD_INIT_DATA MCDInitData
);