Driver De Dispositivo Cliente USB Mass Storage
Propósito
Suporta o protocolo Universal Serial Bus (USB) para armazenamento em massa e disco rígido de tipo granel, Removable Disk Drive (RDX), pen drives, CD-ROM, DVD-RAM, Blu-ray read-only e dispositivos de memória óptica de leitura / gravação.
Sintaxe
#include <sys/devinfo.h>
#include <sys/scsi.h>
#include <sys/scdisk.h>
#include <sys/ide.h>
#include <sys/usb.h>
#include <sys/usbdi.h>
#include <sys/mstor.h>
Descrição
Disco rígido USB típico, RDX, pen drives, CD-ROM, DVD-RAM, Blu-ray read-only, e operações de unidade óptica de leitura / gravação são implementadas usando as subroutines open, close, read, writee ioctl .
Subroutines dependentes de dispositivo
O driver de dispositivo de armazenamento em massa USB suporta apenas as subroutines open, close, ioctle config .
subroutines abertas e fechas
A subroutine openx é usada principalmente pelos comandos de diagnóstico e utilitários. A autoridade adequada é necessária para executar a subroutine. Se você executar oopen sub-rotina sem a autoridade necessária, a sub-rotina retornará um valor de-1 e define o errno variável global para um valor deEPERM .
O parâmetro ext que é especificado no subroutine openx seleciona a operação a ser utilizada para o dispositivo de destino. O arquivo /usr/include/sys/usb.h define os valores possíveis para o parâmetro ext .
O parâmetro ext pode conter qualquer combinação lógica dos seguintes valores de sinalização:
| Item | Descrição |
|---|---|
| SC_DIAGNÓSTICO | Coloca o dispositivo selecionado no modo Diagnostic . Este modo é singularmente entrante, o que significa que apenas um processo por vez pode abrir o dispositivo de cada vez. Quando um dispositivo está no modo Diagnostic , os dispositivos USB são inicializados durante as operações open ou close , e o registro de erros é desativado. No modo Diagnostic , apenas as operações subroutine close e ioctl são aceitas. Todas as outras sub-rotinas suportadas pelo dispositivo retornam um valor de-1 e definir o errno variável global para um valor deEACCES .Um dispositivo pode ser aberto no modo |
| SC_ÚNICO | Coloca o dispositivo selecionado no modo Exclusive
Access . Apenas um processo pode abrir um dispositivo no modo Exclusive
Access de cada vez.Um dispositivo pode ser aberto no modo |
subroutines de readx e writex
As subroutines readx e writex não são suportadas em dispositivos USB. Mesmo que sejam chamados, o parâmetro ext não é processado.
subroutine de ioctl
ioctl que são usadas para o driver de dispositivo usbcd são específicas para as seguintes categorias de dispositivos USB:- Operações comuns
ioctlpara todos os dispositivos USB - Disco rígido USB, pen drive e dispositivos RDX
- USB CD-ROM e dispositivos ópticos de leitura / gravação
Operações comuns ioctl suportadas para todos os dispositivos USB
As seguintes operações ioctl estão disponíveis para disco rígido, pen drive, RDX, CD-ROM e dispositivos ópticos de leitura / gravação:
| Operação | Descrição |
|---|---|
| DKIORDSE | Emite um comando de leitura para o dispositivo e obtém os dados de sentido do dispositivo alvo quando ocorre um erro. Se oDKIORDSE operação retorna um valor de-1 e se ostatus_validity campo está definido para oSC_SCSI_ERROR valor, dados de sentido válidos serão retornados. Caso contrário, dados de sentido alvo são omitidos.A operação A estrutura Nota: A operação
CDIORDSE pode ser substituída para a operação DKIORDSE quando o comando read for emitido para obter dados de sentido de um dispositivo de CD-ROM. A operação DKIORDSE é a operação recomendada. |
| DKIOCMD | Quando o dispositivo é aberto com sucesso no modo Normal ou Diagnostic , a operação DKIOCMD pode emitir qualquer comando Small Computer System Interface (SCSI) para o dispositivo especificado. O driver do dispositivo não registra nenhuma recuperação de erro ou falhas desta operação.O byte de status SCSI e o status do adaptador bytes são retornados através do parâmetro arg que contém o endereço de uma estrutura A estrutura |
| DKIOCMD (continuação) | O código de exemplo a seguir emite a operação ioctl DKIOCMD para o dispositivo usbms0 para obter os dados de consulta padrão SCSI: |
| DKIOLCMD | Quando o dispositivo é aberto com sucesso no modo Normal ou Diagnostic , a operação DKIOLCMD pode emitir qualquer comando SCSI para o dispositivo especificado. O driver do dispositivo não registra nenhuma falha de recuperação de erro desta operação.Esta operação O byte de status SCSI e o status do adaptador bytes são retornados através do parâmetro arg que contém o endereço de uma estrutura Na conclusão da solicitação A estrutura |
| DKIOLCMD (continuação) | O código de exemplo a seguir emite a operação ioctl DKIOLCMD para o dispositivo usbms0 para obter os dados de consulta padrão SCSI: |
| DK_PASSTHRU | Quando o dispositivo é aberto com sucesso, a operação DK_PASSTHRU pode emitir qualquer comando SCSI para o dispositivo especificado. O driver de dispositivo executa cobrança de erro limitada se esta operação falhar. A operação DK_PASSTHRU difere da operação DKIOCMD tal que ela não requer um comando openx com o argumento ext do campo SC_DIAGNOSTIC . Por causa disso, a operação DK_PASSTHRU pode ser emitida para dispositivos que estão em uso por outras operações.O byte de status SCSI e o status do adaptador bytes são retornados através do parâmetro arg que contém o endereço de uma estrutura Se um O campo de versão da estrutura
sc_passthru pode ser configurado com o valor de SCSI_VERSION_2 e você pode especificar os seguintes campos:
Na conclusão da solicitação A estrutura Nota: Se você chamar a operação
DK_PASSTHRU como um usuário não root, a operação falhará com o valor de erro EACCES em vez do valor EPERM . |
| DK_PASSTHRU (continuação) | O código de exemplo a seguir emite a operação DK_PASSTHRU
ioctl para o dispositivo usbms0 para obter os dados de consulta padrão SCSI: |
operações ioctl para disco rígido USB, pen drive e dispositivos RDX
As seguintes operações ioctl estão disponíveis para disco rígido USB, pen drive e dispositivos RDX apenas:
| Operação | Descrição |
|---|---|
| IOCINFO | Retorna a estrutura devinfo que é definida no arquivo /usr/include/sys/devinfo.h . A operação IOCINFO é a única operação definida para todos os drivers de dispositivos que utilizam a subroutine ioctl . Os valores a seguir são retornados: |
| DKPMR | Emite um comando SCSI evitar remoção de mídia (PMR) quando o dispositivo for aberto com sucesso. Este comando evita que a mídia seja ejetada até que o dispositivo seja fechado, desligado e reiniciado ou até que uma operação DKAMR seja emitida. O parâmetro arg para a operação DKAMR é nulo. Se a operação DKAMR for bem-sucedida, a subroutine devolve um valor de 0. Se o dispositivo for um disco rígido SCSI, oDKAMR operação falha, a sub-rotina retorna um valor de-1 , e define o errno variável global para um valor deEINVAL . Se oDKAMR operação falhar por qualquer outro motivo, a sub-rotina retornará um valor de-1 e define o errno variável global para um valor deEIO .Nota: Esta função é fornecida para suportar os dispositivos USB RDX que suportam ejetar os cartuchos de mídia.
|
| DKAMR | Emite um comando de permitem remoção de mídia (AMR) quando o dispositivo é aberto com sucesso. A mídia pode então ser ejetada usando-se o botão de ejeção do driver ou a operação DKEJECT . O parâmetro arg para esta operação ioctl é nulo. Se a operação DKAMR for bem-sucedida, a subroutine devolve um valor de 0. Se o dispositivo for um disco rígido SCSI, a operação DKAMR falha. Além disso, a sub-rotina retorna um valor de-1 e define o errno variável global para um valor deEINVAL . Para qualquer outra causa de falha desta operação, a sub-rotina retorna um valor de-1 , e define o errno variável global para um valor deEIO .Nota: Esta função é fornecida para suportar os dispositivos USB RDX que suportam ejetar os cartuchos de mídia.
|
operações ioctl para CD-ROM e dispositivos ópticos de leitura / gravação
As seguintes operações ioctl estão disponíveis para CD-ROM e dispositivos ópticos de leitura / gravação:
| Operação | Descrição |
|---|---|
| IOCINFO | Retorna a estrutura devinfo que é definida no arquivo /usr/include/sys/devinfo.h . A operação IOCINFO é a única operação definida para todos os drivers de dispositivos que utilizam a subroutine ioctl . Os valores a seguir são retornados: |
| IDEPASSTHRU | Emite um comando AT Attachment Packet Interface (ATAPI) para o dispositivo especificado quando o dispositivo é aberto com sucesso. A operação IDEPASSTHRU não requer um comando openx com o argumento ext do valor SC_DIAGNOSTIC . Portanto, uma operação IDEPASSTHRU pode ser emitida para dispositivos que estejam em uso por outras operações.Os bytes de status do AT Attachment (ATA) e os bytes de erro ATA são retornados através do parâmetro arg . Este parâmetro contém o endereço de uma estrutura Se a operação Na conclusão bem-sucedida da solicitação |
| IDEPASSTHRU (continuação) | O código de exemplo a seguir emite um comando de consulta SCSI que usa a operação |
| DKPMR | Problemas uma Small Computer System Interface (SCSI) impedem o comando de remoção de mídia quando o dispositivo é aberto com sucesso. Este comando evita que a mídia ejeta até que o dispositivo seja fechado, desligado e então ligado ou até que uma operação DKAMR seja emitida. O parâmetro arg para a operação DKPMR é nulo. Se a operação DKPMR for bem-sucedida, a subroutine devolve um valor de 0. Se o dispositivo for um disco rígido SCSI, oDKPMR operação falha, a sub-rotina retorna um valor de-1 , e define o errno variável global para um valor deEINVAL . Se oDKPMR operação falhar por qualquer outro motivo, a sub-rotina retornará um valor de-1 e define o errno variável global para um valor deEIO . |
| DKAMR | Emite um comando de remoção de mídia de permitir quando o dispositivo é aberto com sucesso. A mídia pode ser ejetada usando-se o botão de ejeção de unidades ou a operação DKEJECT . O parâmetro arg para esta operação é nulo. Se a operação DKAMR for bem-sucedida, a subroutine devolve um valor de 0. Se o dispositivo for um disco rígido SCSI, oDKAMR a operação falha e a sub-rotina retorna um valor de-1 e define o errno variável global para um valor deEINVAL . Para qualquer outra causa de falha na operação, a sub-rotina retorna um valor de-1 e define o errno variável global para um valor deEIO . |
| DKEJECT | Emite um comando de mídia ejeta para a unidade quando o dispositivo é aberto com sucesso. O parâmetro arg para esta operação é nulo. Se a operação DKEJECT for bem-sucedida, a subroutine devolve um valor de 0. Se o dispositivo for um disco rígido SCSI, oDKEJECT operação falha, a sub-rotina retorna um valor de-1 , e define o errno variável global para um valor deEINVAL . Para qualquer outra causa de falha na operação, a sub-rotina retorna um valor de-1 e define o errno variável para um valor deEIO . |
| DKAUDIO | Emite um comando de áudio de peça para o dispositivo especificado e controla o volume nas portas de saída do dispositivo. Os comandos de áudio da peça podem jogar, pausar, retomar, parar, determinar o número de faixas e determinar o status de uma operação de áudio atual. A operação DKAUDIO toca áudio apenas através de portas de saída da unidade de CD-ROM. O parâmetro arg desta operação é o endereço de uma estrutura cd_audio_cmds que é definida no arquivo /usr/include/sys/scdisk.h . O modo de acesso exclusivo é necessário.Se o |
| DK_CD_MODE | Emite um dos seguintes comandos:
Se um CD-ROM não estiver configurado para diferentes modos de dados usando os códigos de densidade de seleção de modo, e se você alterar o modo de dados do CD-ROM definindo o campo de ação do |
Requisitos de hardware do dispositivo
Disco rígido USB, pen drive, RDX, CD-ROM e unidades ópticas de leitura / gravação possuem os seguintes requisitos de hardware:
- Essas unidades devem suportar um tamanho de bloco de 512 bytes por bloco.
- Se o senso de modo for suportado, o bit de write-protection (WP) também deve ser suportado para discos rígidos de memória de acesso sequencial (SAM) e unidades ópticas de leitura / gravação.
- Discos rígidos USB, pen drives, RDX e unidades ópticas de leitura / gravação devem relatar a contagem de retentos de hardware em bytes dos dados de sentido de solicitação para erros recuperados. Se o disco rígido USB ou unidade óptica de leitura / gravação não suportar este recurso, o log de erros do sistema pode indicar falha de unidade prematura.
- As unidades ópticas de CD-ROM e de leitura / gravação USB devem suportar o comando de leitura 10-byte SCSI.
- Discos rígidos USB, pen drives, RDX e unidades ópticas de leitura / gravação devem suportar o comando SCSI de gravação e verificação e o comando de gravação SCSI 6-byte.
- A unidade óptica de leitura / gravação deve configurar as opções de formato válidas (FOV) bit a 0 para o cabeçalho da lista de defeitos do comando unitário de formato SCSI para usar a operação de comando de formato. Se a unidade não suportar esse recurso, você pode gravar um aplicativo para a unidade para que ela formata a mídia usando a operação
DKFORMAT. - Se uma unidade de CD-ROM USB usa o formato CD_ROM Data Mode 1, ele deve suportar um tamanho de bloco de 512 bytes por bloco.
- Se uma unidade de CD-ROM USB usa o formato CD_ROM data Modo 2 Formulário 1, ele deve suportar um tamanho de bloco de 2048 bytes por bloco.
- Se uma unidade de CD-ROM USB usa o formato CD_ROM data Modo 2 Formulário 2, ele deve suportar um tamanho de bloco de 2336 bytes por bloco.
- Se uma unidade de CD-ROM USB usa o modo CD_DA, ele deve suportar um tamanho de bloco de 2352 bytes por bloco.
- Para controlar o volume usando a operação
DKAUDIO(play audio), o dispositivo deve suportar a página de dados do modo SCSI-20xE. - Para usar a operação
DKAUDIO(play audio), o dispositivo deve suportar os seguintes comandos opcionais SCSI-2 :- ler sub-canal
- pausa de pausa
- play audio mail arquivo resumo (.msf)
- jogar índice de faixa de áudio
- tabela de leitura de conteúdos (TOC)
devices.usbif.08025002# cfgmgr -l usb0
# rmdev -l usbmsnou#rmdev -l cdnQuando uma unidade está no estado disponível, é possível reconectar a unidade ao sistema, e a unidade pode ser remada ou reaberta. Se uma unidade é desconectada de uma porta USB do sistema enquanto ela ainda está aberta para um usuário, essa unidade não é reutilizável até que você feche e reabra-a.O AIX Versão 6.1 com o Nível de Tecnologia 6100-06 reconhece e configura unidades Blu-ray conectadas USB como somente leitura. O sistema operacional AIX não suporta a operação de gravação em CD, DVD ou mídia Blu-ray que estão presentes na unidade USB Blu-ray. Apesar de a operação de gravação não ser impedida (se a unidade for capaz de gravação), nenhum suporte é fornecido para quaisquer problemas que sejam encontrados durante a operação de gravação.
A capacidade do sistema operacional AIX de operar na unidade flash do fabricante de equipamentos originais USB (OEM), Blu-ray e dispositivos ópticos é validada contra uma amostra de dispositivos OEM USB padrão do setor que são compatíveis com as normas USB. Você pode encontrar problemas com certos dispositivos USB que não são compatíveis e o sistema operacional AIX não oferece nenhum suporte para essas questões.