[VB.net] Software schijf maken

Pagina: 1
Acties:
  • 351 views sinds 30-01-2008
  • Reageer

  • Wouter7
  • Registratie: Oktober 2005
  • Laatst online: 11-08-2022

Wouter7

Enjoy every day.

Topicstarter
Hallo

Ik weet dat de kans dat iemand me kan helpen maar klein is maarja, je weet nooit he.

Zoals velen kennen jullie de (beta) fuctie van google zodat je een nieuwe harde schijf bijkrijgt op je pc en deze maakt dan verbinding met je gmail account en zo kan je dat gebruiken als externe opslagruimte.

Nu is mijn vraag, hoe doen ze dat in godsnaam? Ik zou graag ook zo iets gelijkaardigs maken al weet ik dat het moeilijk zal zijn.

Door een beetje research ben ik dit al teweten gekomen:
- de schijf wordt geinstaleerd als een echte hardware driver
- deze roept een DLL aan die dan verbinding maakt met de google servers

de code van de installer is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
; GMail Drive setup file Copyright 2004-2007 by Bjarke Viksoe <bjarke@viksoe.dk>
;
; *** WARNING: If you delete this file you will not be able to uninstall GMail Drive!

[Version]
Signature="$CHICAGO$"
SetupClass=BASE

[DefaultInstall]
CopyFiles=Boom.CopyFiles
AddReg=Boom.Install.AddRegEntries

[DefaultUninstall]
DelReg=Boom.Uninstall.DelRegEntries
DelFiles=Boom.CopyFiles, Boom.DelFiles

[SourceDisksNames]
42="%Title%","",1

[SourceDisksFiles]
GMailFS.dll=42
GMailFS.inf=42
GMailFS.chm=42

[Boom.CopyFiles]
GMailFS.dll,,,1
GMailFS.inf
GMailFS.chm

[Boom.DelFiles]
GMailFS.hlp
GMailFS.cnt

[DestinationDirs]
Boom.CopyFiles=11,%SubDir%     ; send to System\%SubDir%
Boom.DelFiles=11,%SubDir%      ; send to System\%SubDir%

[Boom.Install.AddRegEntries]
HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup,%Title%,,"rundll32.exe %11%\%SubDir%\%ExeFile%,Install"
HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\%ShortName%,"DisplayName",,"%Title%"
HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\%ShortName%,"UninstallString",,"rundll32.exe %11%\%SubDir%\%ExeFile%,Uninstall %11%\%SubDir%\%InfFile%"

[Boom.Uninstall.DelRegEntries]
HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\%ShortName%
HKCU,Software\Software\viksoe.dk\GMailFS

[Strings]
Title = "GMail Drive Shell Extension"
ShortName = "GMailFS"
SubDir = "ShellExt"
ExeFile = "GMailFS.dll"
InfFile = "GMailFS.inf"


Waaruit gelinkt dus wordt naar regels in de DLL.

Nu kan ik (erg) goed programeren met vb.net voor gewone applicaties maar niet met DLLs. Maar al doende leert men ;)


Iemand die me kan helpen of die iets meer weet?

[ Voor 0% gewijzigd door een moderator op 13-06-2007 18:46 . Reden: code tags toegevoegd ]


  • YellowCube
  • Registratie: December 2001
  • Laatst online: 16:04

YellowCube

Wait...what?

waarom is het met een dll extra moeilijk?
Ik neem (even heel gemakkelijk) aan dat die dll een aantal bibliotheken bevat met procedures en functies die je vanuit je applicatie aan kunt roepen.
Wat ik zo kan zien is dat hij die dll tijdens de installatie ergens neerzet en vervolgens registreert op je systeem.

[ Voor 23% gewijzigd door YellowCube op 13-06-2007 18:37 ]

My doctor says that I have a malformed public-duty gland and a natural deficiency in moral fibre and that I am therefore excused from saving the world


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je zult dus zelf die DLL moeten maken als je eigen specifieke functionaliteit wil voor je "schijf"; en dat zal dan dus een device-driver zijn en dat betekent weer dat je er in VB.Net niet gaat komen. Althans, niet bij mijn weten ;)

Overigens is dat geen "code" die je gepost hebt (hoewel ik er even code tags omheen heb gezet voor de leesbaarheid) maar gewoon een .ini file welke informatie bevat voor de installer (welke bestanden moeten waar naar toe gekopieerd worden etc.). De .ini bevat verder dus 0,0 relevante informatie voor je. In "een" DLL zitten ook geen "regels" maar functionaliteit beschikbaar gesteld middels functies e.d.; je zult (als je wil 'afkijken') dus in die DLL moeten duiken. Of dat haalbaar is is een tweede. Je kunt je beter storten op documentatie in de DDK.

Overigens, als je "(erg) goed" kunt programmeren dan snap ik niet dat je terugschrikt van het gebruik van een DLL; een DLL gebruiken vanuit je programmatuur is echt niets engs hoor ;)

[ Voor 10% gewijzigd door RobIII op 13-06-2007 19:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

RobIII schreef op woensdag 13 juni 2007 @ 18:59:
Je zult dus zelf die DLL moeten maken als je eigen specifieke functionaliteit wil voor je "schijf"; en dat zal dan dus een device-driver zijn en dat betekent weer dat je er in VB.Net niet gaat komen. Althans, niet bij mijn weten ;)
Zover als een device driver hoef je niet te gaan. Volgens mij moet je alleen wat shell extensions maken. Maar ook dat kun je niet doen met pure .Net code voor zover ik weet.

Do diamonds shine on the dark side of the moon :?


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Kijk hier eens naar: http://www.microsoft.com/...ndation/toastersamp.mspx#

(weet alleen niet wat ze met een toasterdriver bedoelen)

Als je mazzel heb kun je met wat kleine aanpassingne in een simpele mass-storage driver (zelfde driver als die gebruikt wordt voor usbopslag) aanpassen om alle calls door te sturen naar je vb.net app, vanaf waar het een stuk makkelijker zal worden.

Probeer eens of je het kan met de bovenstaande "hoe maak ik een driver" uitleg, en met deze simpele usbstorage driver (win98, maar zal omdat het Windows Driver Model is ook onder Xp werken denk ik)

SAMPLE: Umss.exe Sample USB Mass Storage Driver for Windows 98 on Two Drivers

succes, houd ons op de hoogte! :D

~ Mijn prog blog!


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

therat10430 schreef op woensdag 13 juni 2007 @ 20:18:
Als je mazzel heb kun je met wat kleine aanpassingne in een simpele mass-storage driver (zelfde driver als die gebruikt wordt voor usbopslag) aanpassen om alle calls door te sturen naar je vb.net app, vanaf waar het een stuk makkelijker zal worden.
Ik kan je nu al vertellen dat dat geen feest is. USB mass storage wrapt eigenlijk gewoon SCSI commands welke je dan zou moeten emuleren. Je kunt dan dus niet echt wat doen met eigen files(ysteem) of speciale dingen omdat je gewoon een raw device aan het emuleren bent. Misschien wil je dat wel.. misschien ook niet ;)

Do diamonds shine on the dark side of the moon :?


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
voodooless schreef op woensdag 13 juni 2007 @ 19:48:
Zover als een device driver hoef je niet te gaan. Volgens mij moet je alleen wat shell extensions maken. Maar ook dat kun je niet doen met pure .Net code voor zover ik weet.
Dat is natuurlijk afhankelijk van wat je wil (gaan) doen, en dat wordt mij niet geheel duidelijk uit de TS.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

RobIII schreef op donderdag 14 juni 2007 @ 01:12:
Dat is natuurlijk afhankelijk van wat je wil (gaan) doen, en dat wordt mij niet geheel duidelijk uit de TS.
Zie post boven je :+

Do diamonds shine on the dark side of the moon :?


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 28-11 15:56

killercow

eth0

Wat de dll doet is een serie functies aanbieden welke nodig zijn om files te lezen en te schrijven.
Deze functies lezen daarna http acties bij google, aan de hand van wat er terug komt bij google vandaan worden daarna de file lists etc doorgegeven aan jouw applicatie.

Net zo iets, maar misschien leesbaarder (in python)
http://wikipediafs.sourceforge.net/

En de originele gmailFS (ook in python)
http://richard.jones.name...tem/gmail-filesystem.html

openkat.nl al gezien?


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Met als klein verschil dat de FS'en geschreven in Python alleen in Linux werken en niet in Windows. Daarnaast gebeurt het echte driver gebeuren in de python scripts door een kernel module (FUSE). In dit geval niet echt te vergelijken dus.

[ Voor 25% gewijzigd door Creepy op 14-06-2007 10:41 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
FUSE is makkelijk. In Windows heb je de IFS SDK nodig, onderdeel van de DDK. En dat is uiteraard niet mogelijk met VB.Net (zelfs niet met C++.NET).

How do I inflate a bicycle tire with a potato?

[ Voor 29% gewijzigd door MSalters op 14-06-2007 21:06 ]

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Een goede start is http://msdn2.microsoft.com/en-us/library/aa969289.aspx
Hier wordt bijvoorbeeld uitgelegd hoe je een virtuele schrijf voor bijvoorbeeld een digitale camera kunt schrijven.

Daarnaast moet je er rekening mee houden dat je erg veel API call zult moeten maken. Ook zul je veel C++ structures moeten 'vertalen' naar de VB.NET variant. Als je nog erg weinig met DllImport (System.Runtime.InteropServices namespace) hebt gewerkt raad ik aan je eerst goed in te lezen in deze materie.

Het uitbereiden van de windows shell (keyword: Windows Shell Programming) op een onjuist manier kan je windows installatie ernstig verzieken.

Ga je toch experimenteren hiermee, zorg dan dat je een virutele windows omgeving hebt via vmware of virtual server.

If it isn't broken, fix it until it is..

Pagina: 1