[c#]Werken met portable devices (in Vista)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 21:10

Haan

dotnetter

Topicstarter
Ik was van plan om een simpel programmaatje te schrijven waarbij ik zelf wat meer controle zou hebben over het random selecteren van muziek op m'n pc om naar mijn (of een willekeurige andere) mp3 speler te sturen.

Het idee is ook simpel:
-maak iets waarmee je een disk kan selecteren met DiskType 'removable'
-bepaal schijfruimte
-maak iets om locaties op te geven waar muziekbestanden vandaan mogen komen
-maak een random functie om bestanden te selecteren
-kopieer naar device, klaar

Maar bij de eerste stap gaat het al mis.. Huidige mp3 spelers (in ieder geval de twee die ik hier voorhanden heb) worden namelijk niet als removable storage gezien, maar als portable device, zonder drive letter.

Hiervoor zit geen functionaliteit in .Net, wel zijn er de PortableDeviceApiLib en PortableDeviceTypesLib die dat wél hebben. Het probleem is alleen dat deze in C++ geschreven zijn en ik nog nooit iets met die taal gedaan heb.

Ook zijn er eigenlijk maar bijzonder weinig voorbeelden te vinden, wat opzich wel vreemd is eigenlijk, want zo raar is de combinatie mp3 speler + .Net toch niet?
Op MSDN is wel uitleg, maar dat is dus in C++, verder is er nog een blog van iemand van Microsoft waarbij wel C# wordt gebruikt die opzich veel nuttige info bevat.

Maar ook daar moet ik eerst die C++ library disassemblen naar IL, daar wijzigingen in methoden aanbrengen en dan de gewijzigde IL weer assemblen (dat wilde bij mij niet lukken :( ) voordat je eigenlijk iets kan doen met C#.

Grote vraag is dus eigenlijk of er hier mensen zijn die zoiets al eerder hebben gedaan in .NET anders moet ik eerst wat beginners tutorials C++ doornemen voor ik verder ga.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 22:38
Haan schreef op dinsdag 29 juli 2008 @ 09:12:
Maar bij de eerste stap gaat het al mis.. Huidige mp3 spelers (in ieder geval de twee die ik hier voorhanden heb) worden namelijk niet als removable storage gezien, maar als portable device, zonder drive letter.
Ik heb er hier 1 die gewoon een USB storage device is.

Ik vrees dat als iets een portable device is, je sowieso vast zit aan fabrikantspecifieke protocollen waarvoor je dus aparte API's voor moet hebben. Ik weet natuurlijk niet welke mp3 spelers jij geprobeerd hebt maar ik ben bang dat er geen generieke interface voor is. Voor bv de iPod en voor de Creative Zen zijn er specifieke API's.

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 21:10

Haan

dotnetter

Topicstarter
Als een device het Media Transfer Protocol ondersteunt zou dat geen probleem moeten zijn.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 03:53

mOrPhie

❤️❤️❤️❤️🤍

Haan schreef op dinsdag 29 juli 2008 @ 09:12:

Maar ook daar moet ik eerst die C++ library disassemblen naar IL, daar wijzigingen in methoden aanbrengen en dan de gewijzigde IL weer assemblen (dat wilde bij mij niet lukken :( ) voordat je eigenlijk iets kan doen met C#.
Waarom? Je gebruikt toch gewoon de WPD api via interop? Dat is toch voldoende. FYI: PortableDeviceApiLib.dll zit gewoon gecompileerd en wel in de Windows SDK die je vanaf MSDN kunt downloaden. :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 21:10

Haan

dotnetter

Topicstarter
mOrPhie schreef op dinsdag 29 juli 2008 @ 10:19:
[...]


Waarom? Je gebruikt toch gewoon de WPD api via interop? Dat is toch voldoende.
Ik verzin dat ook niet zelf :P Hier staat het uitgelegd
FYI: PortableDeviceApiLib.dll zit gewoon gecompileerd en wel in de Windows SDK die je vanaf MSDN kunt downloaden. :)
Die heb ik geinstalleerd ja :)

Kater? Eerst water, de rest komt later