Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: cdchgr.h
//
//--------------------------------------------------------------------------
#include <stdarg.h>
#include <stdio.h>
#include <ntddk.h>
#include <scsi.h>
#include "ntddchgr.h"
#include "ntddscsi.h"
#ifdef DebugPrint
#undef DebugPrint
#endif
#if DBG
#define DebugPrint(x) ChgrDebugPrint x
#else
#define DebugPrint(x)
#endif
VOID ChgrDebugPrint( ULONG DebugPrintLevel, PCCHAR DebugMessage, ... );
//
// Default timeout for all requests.
//
#define CDCHGR_TIMEOUT 30
#define MAX_INQUIRY_DATA 252
#define SLOT_STATE_NOT_INITIALIZED 0x80000000
//
// DriveType identifiers
//
#define ATAPI_25 0x0001
#define TORISAN 0x0002
#define ALPS_25 0x0003
#define NEC_SCSI 0x0004
#define PNR_SCSI 0x0005
//
// Device Extension
//
typedef struct _DEVICE_EXTENSION {
//
// Back pointer to device object
//
PDEVICE_OBJECT DeviceObject;
//
// Device Object for the underlying cdrom device.
//
PDEVICE_OBJECT CdromTargetDeviceObject;
//
// Determination of the device type.
//
ULONG DeviceType;
//
// Unique data for the DeviceType.
// ATAPI_25 will be NumberOfSlots
//
ULONG NumberOfSlots;
//
// Indicates the currently selected platter of Torisan units.
// Used in TURs (as the device overloads this command).
//
ULONG CurrentPlatter;
//
// The mechanism type - Cartridge (1) or individually changable media (0).
//
ULONG MechType;
//
// Ordinal of the underlying target.
//
ULONG CdRomDeviceNumber;
//
// PagingPathRequirements
//
ULONG PagingPathCount; KEVENT PagingPathCountEvent;
//
// The address of the underlying cdrom device.
//
SCSI_ADDRESS ScsiAddress;
//
// Indicates whether InterfaceState is currently set.
//
ULONG InterfaceStateSet;
//
// Symbolic link setup by IoRegisterDeviceInterface.
// Used for IoSetDeviceState
//
UNICODE_STRING InterfaceName;
//
// Cached inquiry data.
//
INQUIRYDATA InquiryData;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
#define DEVICE_EXTENSION_SIZE sizeof(DEVICE_EXTENSION)
typedef struct _PASS_THROUGH_REQUEST { SCSI_PASS_THROUGH Srb; SENSE_DATA SenseInfoBuffer; CHAR DataBuffer[0]; } PASS_THROUGH_REQUEST, *PPASS_THROUGH_REQUEST;
//
// Changer function declarations.
//
NTSTATUS SendPassThrough( IN PDEVICE_OBJECT DeviceObject, IN PPASS_THROUGH_REQUEST ScsiPassThrough );
BOOLEAN ChgrIoctl( IN ULONG Code );
NTSTATUS ChgrGetStatus( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrGetParameters( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrGetStatus( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrGetProductData( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrSetAccess( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrGetElementStatus( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrInitializeElementStatus( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrSetPosition( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrExchangeMedium( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrReinitializeUnit( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrQueryVolumeTags( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ChgrMoveMedium( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS SendTorisanCheckVerify( PDEVICE_OBJECT DeviceObject, PIRP Irp );
|