// minitape.h
typedef struct _TAPE_INIT_DATA_EX {
ULONG InitDataSize;
TAPE_VERIFY_INQUIRY_ROUTINE VerifyInquiry;
BOOLEAN QueryModeCapabilitiesPage;
ULONG MinitapeExtensionSize;
TAPE_EXTENSION_INIT_ROUTINE ExtensionInit;
ULONG DefaultTimeOutValue;
TAPE_ERROR_ROUTINE TapeError;
ULONG CommandExtensionSize;
TAPE_PROCESS_COMMAND_ROUTINE CreatePartition;
TAPE_PROCESS_COMMAND_ROUTINE Erase;
TAPE_PROCESS_COMMAND_ROUTINE GetDriveParameters;
TAPE_PROCESS_COMMAND_ROUTINE GetMediaParameters;
TAPE_PROCESS_COMMAND_ROUTINE GetPosition;
TAPE_PROCESS_COMMAND_ROUTINE GetStatus;
TAPE_PROCESS_COMMAND_ROUTINE Prepare;
TAPE_PROCESS_COMMAND_ROUTINE SetDriveParameters;
TAPE_PROCESS_COMMAND_ROUTINE SetMediaParameters;
TAPE_PROCESS_COMMAND_ROUTINE SetPosition;
TAPE_PROCESS_COMMAND_ROUTINE WriteMarks;
TAPE_PROCESS_COMMAND_ROUTINE PreProcessReadWrite;
TAPE_PROCESS_COMMAND_ROUTINE TapeGetMediaTypes;
ULONG MediaTypesSupported;
TAPE_PROCESS_COMMAND_ROUTINE TapeWMIOperations;
ULONG Reserved[2];
} TAPE_INIT_DATA_EX, *PTAPE_INIT_DATA_EX;
View the official Windows Driver Kit DDI referenceNo description available.
TAPE_INIT_DATA_EX defines values and routines that are specific to a Windows 2000 tape miniclass driver. The tape miniclass DriverEntry routine passes this information to the tape class driver to complete miniclass driver initialization.
InitDataSizeSize of this structure, in bytes.
VerifyInquirySpecifies the entry point of the tape miniclass driver's TapeMiniVerifyInquiry routine, which determines whether the driver supports a given device. This routine is required.
QueryModeCapabilitiesPageDirects the tape class driver when TRUE to pass a mode capabilities page to the tape miniclass driver's TapeMiniVerifyInquiry and TapeMiniExtensionInit routines.
MinitapeExtensionSizeSpecifies the size, in bytes, of a driver-specific context area. If this member is nonzero, ExtensionInit must not be NULL. This value is optional and must be set to zero if not used.
ExtensionInitPointer to the tape miniclass driver's TapeMiniExtensionInit routine, which initializes an optional minitape extension, if any. If MiniTapeExtensionSize is zero, ExtensionInit must be NULL.
DefaultTimeOutValueSpecifies the number of seconds that the tape class driver waits for an SRB request before canceling it. If this value is zero, the tape class driver sets an appropriate default value. The tape class driver always uses the default time-out value for read and write requests. The routines contained in the TAPE_INIT_DATA_EX structure can override the default time-out value for device control requests by setting TimeOutValue in an SRB.
TapeErrorPointer to the tape miniclass driver's TapeMiniTapeError routine, which augments the error-handling activities of the tape class driver. This routine is optional. If one is not used, TapeError must be set to NULL.
CommandExtensionSizeSpecifies the size, in bytes, of a command extension to be allocated before the start of each tape command. A tape miniclass driver uses the command extension to store context during the processing of tape commands. Its size and internal structure are defined by the tape miniclass driver. A command extension is optional. If one is not used, CommandExtensionSize must be set to zero.
CreatePartitionPointer to the tape miniclass driver's TapeMiniCreatePartition routine, which creates a partition on a tape. This routine is required.
ErasePointer to the tape miniclass driver's TapeMiniErase routine, which erases a tape. This routine is required.
GetDriveParametersPointer to the tape miniclass driver's TapeMiniGetDriveParameters routine, which handles requests to get drive parameters. This routine is required.
GetMediaParametersPointer to the tape miniclass driver's TapeMiniGetMediaParameters routine, which handles requests to get media parameters. This routine is required.
GetPositionPointer to the tape miniclass driver's TapeMiniGetPosition routine, which handles requests to get the position of a tape. This routine is required.
GetStatusPointer to the tape miniclass driver's TapeMiniGetStatus routine, which handles requests for status. This routine is required.
PreparePointer to the tape miniclass driver's TapeMiniPrepare routine, which prepares a tape device. This routine is required.
SetDriveParametersPointer to the tape miniclass driver's TapeMiniSetDriveParameters routine, which sets drive parameters. This routine is required.
SetMediaParametersPointer to the tape miniclass driver's TapeMiniSetMediaParameters routine, which sets media parameters. This routine is required.
SetPositionPointer to the tape miniclass driver's TapeMiniSetPosition routine, which positions a tape. This routine is required.
WriteMarksPointer to the tape miniclass driver's TapeMiniWriteMarks routine, which writes marks to tape. This routine is required.
PreProcessReadWritePointer to the tape miniclass driver's TapeMiniPreProcessReadWrite routine, which executes device-specific operations before all reads and writes. This routine is optional and is not needed by most drivers. If one is not used, PreProcessReadWrite must be NULL.
TapeGetMediaTypesPointer to the tape miniclass driver's TapeMiniGetMediaTypes routine, which gets a description of each media type supported by a tape device. This routine is required.
MediaTypesSupportedIndicates the number of media types supported by the device.
TapeWMIOperationsPointer to the TapeMiniWMIControl routine.
ReservedReserved.
A tape miniclass driver's DriverEntry routine calls TapeClassZeroMemory to clear TAPE_INIT_DATA_EX, fills in the required members and any appropriate optional members, and TapeClassInitialize with a pointer to this structure.
The names of the tape miniclass driver routines indicated in the member descriptions of this structure are just placeholder names. The prototype for these routines is declared in newtape.h as TAPE_PROCESS_COMMAND_ROUTINE.
The meaning of this prototype's parameters are different for each miniclass driver routine. For detailed information about how these parameters are used see the descriptions for each individual miniclass driver routine.