---
title: roStorageHotplug
slug: develop/es/rostoragehotplug
docTags: 
createdAt: 2025-03-11T07:07:18.731Z
---

Este objeto proporciona mensajes *roStorageAttached* cuando aparecen dispositivos de almacenamiento y mensajes *roStorageDetached* cuando desaparecen dispositivos de almacenamiento. Un evento de *roStorageAttached* no se entrega hasta que el sistema de archivos está montado. El equivalente en JavaScript es Node.js `fs.watch()`. 

Actualmente no hay forma de realizar polling para medios. 

:::hint{type="info"}
Consulte [esta página](docId\:pDuz9pAQTnJRKfbuKhUPc) para obtener más información sobre las rutas de almacenamiento de dispositivos.
:::

Creación de objetos: El objeto *roStorageHotplug* se crea sin parámetros.

```text
CreateObject("roStorageHotplug")
```

## ifStorageHotplug

### GetStorages() as Object

Devuelve un arreglo ordenado de cadenas donde cada cadena es un especificador de unidad en el que el SO buscará un script de ejecución automática. Por ejemplo: `[ "USB1:/", "SD:/", "SD2:/", "SSD:/", "Flash:/" ]`. Tenga en cuenta que no todos los especificadores de unidad pueden estar presentes o incluso ser posiblemente compatibles en el reproductor en particular.

### GetStorageStatus(drive As String) As roAssociativeArray

Devuelve el estado actual de un dispositivo de almacenamiento ("USB:", "SD:", "SSD:", "SD2:/", "Flash:"), incluso si no está montado. Este método devuelve un arreglo asociativo que contiene lo siguiente:

| **Clave**     | **Tipo de valor** | **Descripción**                                                        |
| ------------- | ----------------- | ---------------------------------------------------------------------- |
| `presente`    | Boolean           | Indica si el dispositivo especificado está presente.                   |
| `montado`     | Boolean           | Indica si el dispositivo especificado está montado.                    |
| `corrupto`    | Boolean           | Indica si se considera que el dispositivo especificado está dañado.    |
| `comprobando` | Boolean           | Indica si el dispositivo especificado se está comprobando actualmente. |

:::hint{type="info"}
Los resultados del método `GetStorageStatus()` no son confiables cuando se llama con un parámetro "USBn:", donde "n" es un entero positivo que indica un dispositivo de almacenamiento USB cuando varios dispositivos USB están conectados al reproductor.
:::

Ejemplo:

```text
 status = CreateObject("roStorageHotplug").GetStorageStatus("SSD:")
 if not status.mounted and not status.checking and status.present then
    ' Should ask for confirmation here
    FormatDrive("SSD:")
 end if 
```

## ifFailureReason

### GetFailureReason() As String

Devuelve información de diagnóstico adicional si un método devuelve `Falso`.

## ifUserData

### SetUserData(user\_data As Object)

Establece los datos de usuario que se devolverán cuando se generen eventos.

### GetUserData() As Object

Devuelve los datos de usuario que se establecieron previamente mediante SetUserData(). Devolverá Invalid si no se ha establecido ningún dato.

## ifMessagePort

### SetPort(port As roMessagePort)

Publica mensajes de tipo *roStorageAttached* y *roStorageDetached*  en el puerto de mensajes adjunto.

:::hint{type="info"}
Para evitar condiciones de carrera durante el inicio, debe comprobar si existe algún dispositivo de almacenamiento que pudiera haber existido antes de que se estableciera el puerto de mensajes. Recomendamos hacer esto después de que se cree el objeto y se establezca el puerto de mensajes, pero antes de indicar al script que espere cualquier evento.
:::

## Ejemplo

```text
Sub Main()
    mp = CreateObject("roMessagePort")
    sh = CreateObject("roStorageHotplug")
    gpio = CreateObject("roControlPort", "brightsign")

    sh.SetPort(mp)
    gpio.SetPort(mp)

    finished = false
    while not finished
    ev = mp.WaitMessage(0)
    if type(ev) = "roControlDown"
        finished = true
    else if type(ev) = "roStorageAttached"
        print "ATTACHED "; ev.GetString()
    else if type(ev) = "roStorageDetached"
        print "DETACHED "; ev.GetString()
    else
        print type(ev)
        stop
    end if
    end while
End Sub 
```

