elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [NTDLL] Enumerar dispositivos (p.e Unidades Extraibles...) - ProcessDeviceMap
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [NTDLL] Enumerar dispositivos (p.e Unidades Extraibles...) - ProcessDeviceMap  (Leído 3,799 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
[NTDLL] Enumerar dispositivos (p.e Unidades Extraibles...) - ProcessDeviceMap
« en: 11 Febrero 2010, 16:18 pm »

Código
  1. Option Explicit
  2. '---------------------------------------------------------------------------------------
  3. ' Module    : mNativeEnumDrives
  4. ' Author    : Karcrack
  5. ' Date      : 11/02/2010
  6. ' Purpose   : Enumerate Drives, allow filtering by device type
  7. '---------------------------------------------------------------------------------------
  8. 'NTDLL
  9. Private Declare Function NtQueryInformationProcess Lib "NTDLL" (ByVal hProcess As Long, ByVal ProcessInformationClass As Long, ProcessInformation As Any, ByVal ProcessInformationLength As Long, ReturnLength As Long) As Long
  10.  
  11. Private Type PROCESS_DEVICEMAP_INFORMATION
  12.    DriveMap                As Long
  13.    DriveType(1 To 32)      As Byte
  14. End Type
  15.  
  16. Public Enum DeviceType
  17.    DRIVE_NOFILTER = -1
  18.    DRIVE_UNKNOWN
  19.    DRIVE_NO_ROOT_DIR
  20.    DRIVE_REMOVABLE
  21.    DRIVE_FIXED
  22.    DRIVE_REMOTE
  23.    DRIVE_CDROM
  24.    DRIVE_RAMDISK
  25. End Enum
  26.  
  27. Private Const ProcessDeviceMap = 23
  28.  
  29. Public Function NtGetDrives(Optional ByVal lFilterType As DeviceType = DRIVE_NOFILTER) As Collection
  30.    Dim tPDC                As PROCESS_DEVICEMAP_INFORMATION
  31.    Dim i                   As Long
  32.  
  33.    Set NtGetDrives = New Collection
  34.  
  35.    If NtQueryInformationProcess(-1, ProcessDeviceMap, tPDC, Len(tPDC), ByVal 0&) = 0 Then
  36.        For i = 0 To 25
  37.            If tPDC.DriveMap And 2 ^ i Then
  38.                If (lFilterType = -1) Or (tPDC.DriveType(i + 1) = lFilterType) Then
  39.                    NtGetDrives.Add Chr$(65 + i) & ":\"
  40.                End If
  41.            End If
  42.        Next i
  43.    End If
  44. End Function

Simplemente es una modificación de este código:
http://www.advancevb.com.ar/?p=335

Ejemplo de uso:
Código
  1. Private Sub Form_Load()
  2.    Dim vItem               As Variant
  3.  
  4.    For Each vItem In NtGetDrives(DRIVE_REMOVABLE)
  5.        MsgBox vItem
  6.    Next vItem
  7. End Sub

Mostrará las unidades extraibles!
Hay que tener en cuenta que no todos los PenDrives USB son detectados como unidades extraibles, para mas precision mirar este codigo que saca el BusType:
http://www.advancevb.com.ar/?p=345


Cualquier duda preguntar! :)

Saludos! ::)


« Última modificación: 11 Febrero 2010, 16:21 pm por Karcrack » En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: [NTDLL] Enumerar dispositivos (p.e Unidades Extraibles...) - ProcessDeviceMap
« Respuesta #1 en: 12 Febrero 2010, 11:24 am »

Hola karcrack, no llegué a entender, tambien con GetLogicalDrive algunos PenDrive no son reconocidos como extraibles ?

S2


En línea

Adrian Desanti
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [NTDLL] Enumerar dispositivos (p.e Unidades Extraibles...) - ProcessDeviceMap
« Respuesta #2 en: 12 Febrero 2010, 11:36 am »

Hola karcrack, no llegué a entender, tambien con GetLogicalDrive algunos PenDrive no son reconocidos como extraibles ?

S2
Con GetDriveType() puede que algunos Pendrives removibles se detecten como DRIVE_FIXED
Es por eso que se ha de sacar el BusType, que es como realmente se sabe si es USB o no ;)
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: [NTDLL] Enumerar dispositivos (p.e Unidades Extraibles...) - ProcessDeviceMap
« Respuesta #3 en: 12 Febrero 2010, 12:06 pm »

Ahora sí, no serán los discos externos USB los DRIVE_FIXED o propiamente algunos Pendrive ?

Gracias por contestar  ;)


PD: Todos estos "Buenos nativos de Karcrak" deberían estar en un solo post !!!













« Última modificación: 12 Febrero 2010, 12:29 pm por Dessa » En línea

Adrian Desanti
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [NTDLL] Enumerar dispositivos (p.e Unidades Extraibles...) - ProcessDeviceMap
« Respuesta #4 en: 12 Febrero 2010, 14:39 pm »

Ahora sí, no serán los discos externos USB los DRIVE_FIXED o propiamente algunos Pendrive ?
Ambos pueden dar esta falsa informacion usando GetDriveType
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: [NTDLL] Enumerar dispositivos (p.e Unidades Extraibles...) - ProcessDeviceMap
« Respuesta #5 en: 12 Febrero 2010, 17:50 pm »

Gracias por el dato, no me habia pasado nunca usando  GetLogicalDrive - GetDriveType, voy a tenerlo en cuenta entonces, Saludos  ;)















« Última modificación: 12 Febrero 2010, 17:51 pm por Dessa » En línea

Adrian Desanti
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
manejar unidades extraibles
Programación C/C++
MessageBoxA 2 3,528 Último mensaje 22 Enero 2011, 13:48 pm
por Oblivi0n
¿Como monitorizar unidades de dispositivos PENDRIVE?
.NET (C#, VB.NET, ASP)
Eleкtro 8 4,355 Último mensaje 9 Febrero 2013, 20:26 pm
por HdM
Enumerar directorio por FTP (WinAPI)
Programación C/C++
mester 1 1,398 Último mensaje 9 Diciembre 2015, 19:41 pm
por mester
Ayuda: Enumerar ficheros
.NET (C#, VB.NET, ASP)
Tomas1982 5 2,329 Último mensaje 15 Septiembre 2016, 15:01 pm
por Lekim
MOVIDO: Ayuda: Enumerar ficheros
Programación Visual Basic
Eleкtro 0 2,121 Último mensaje 14 Septiembre 2016, 17:43 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines