Como puedo saber el path de un pendrive....
con este programa lo que hace es imprimir esto:
\\?\usb#vid_10d6&pid_1100#5&8b16baf&0&3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
osea la unidad asignada????
y alguna informacion sobre estaj tipos de datos
SP_DEVICE_INTERFACE_DATA
GUID
#include <stdlib.h>
#include <shlobj.h>
#include <objbase.h> //DWORRD, ...
#include <setupapi.h> // you may have to manually include this library.
#include <initguid.h> //USBIO_GUID
//#include <conio.h> // ? unnecessary for the moment
//displayPeriph libs
#include <windows.h>
//#include <devguid.h>
#include <regstr.h>
#pragma comment (lib,"setupapi.lib")
#define INITGUID
int main()
{
GUID hidGUID = {0xa5dcbf10, 0x6530, 0x11d2, {0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51, 0xed}};
HDEVINFO hardwareDeviceInfoSet;
SP_DEVICE_INTERFACE_DATA deviceInterfaceData;
PSP_INTERFACE_DEVICE_DETAIL_DATA deviceDetail;
ULONG requiredSize;
HANDLE deviceHandle = INVALID_HANDLE_VALUE;
DWORD result;
//Get the HID GUID value - used as mask to get list of devices
// HidD_GetHidGuid (&hidGUID);
//Get a list of devices matching the criteria (hid interface, present)
hardwareDeviceInfoSet = SetupDiGetClassDevs (&hidGUID,
NULL, // Define no enumerator (global)
NULL, // Define no
(DIGCF_PRESENT | // Only Devices present
DIGCF_DEVICEINTERFACE)); // Function class devices.
deviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
//Go through the list and get the interface data
result = SetupDiEnumDeviceInterfaces (hardwareDeviceInfoSet,
NULL, //infoData,
&hidGUID, //interfaceClassGuid,
0, //changement
&deviceInterfaceData);
/* Failed to get a device - possibly the index is larger than the number of devices */
if (result == FALSE)
{
SetupDiDestroyDeviceInfoList (hardwareDeviceInfoSet);
// return INVALID_HANDLE_VALUE;
}
//Get the details with null values to get the required size of the buffer
SetupDiGetDeviceInterfaceDetail (hardwareDeviceInfoSet,
&deviceInterfaceData,
NULL, //interfaceDetail,
0, //interfaceDetailSize,
&requiredSize,
0); //infoData))
//Allocate the buffer
deviceDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc(requiredSize);
deviceDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
//Fill the buffer with the device details
if (!SetupDiGetDeviceInterfaceDetail (hardwareDeviceInfoSet,
&deviceInterfaceData,
deviceDetail,
requiredSize,
&requiredSize,
NULL))
{
SetupDiDestroyDeviceInfoList (hardwareDeviceInfoSet);
free (deviceDetail);
// return INVALID_HANDLE_VALUE;
}
//Open file on the device
deviceHandle = CreateFile (deviceDetail->DevicePath,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL, // no SECURITY_ATTRIBUTES structure
OPEN_EXISTING, // No special create flags
0,
NULL); // No template file
if(deviceHandle==INVALID_HANDLE_VALUE)
printf("erreur");
else
printf("ca marche");
printf("\tDrive path: %s\n", deviceDetail->DevicePath);
SetupDiDestroyDeviceInfoList (hardwareDeviceInfoSet);
free (deviceDetail);
}