/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
LoadLibrary,WindowsNT/2K/XP
Fra : Per Pedersen


Dato : 15-10-03 18:18

Er der nogen der kan fortælle mig, hvor jeg kan finde en oversigt, over
hvor, i hvilke DLL'er de forskellige rutiner ligger. Det må meget gerne være
bøger.

Jeg er vandt til at kode på AmigaOS, hvor "Runtime Linking" og dynamiske
allokeringer er den gængse standart.

Med venlig hilsen

Per Pedersen



 
 
Ole Nielsby (15-10-2003)
Kommentar
Fra : Ole Nielsby


Dato : 15-10-03 19:24


Per Pedersen <perpedersen33@hotmail.com> skrev:

> Er der nogen der kan fortælle mig, hvor jeg kan finde en oversigt, over
> hvor, i hvilke DLL'er de forskellige rutiner ligger. Det må meget gerne
være
> bøger.
>
> Jeg er vandt til at kode på AmigaOS, hvor "Runtime Linking" og dynamiske
> allokeringer er den gængse standart.

Navnet på dll-filen er tit identisk med det library som er angivet i
dokumentationen (platform SDK).

Ellers er ret nemt at flikke en lille utility sammen som loader en
række biblioteker og prøver dem efter tur med GetProcAddress
når du indtaster et navn; i tilfælde af en forbier prøver din utility
igen med et tilføjet A (eller W hvis du bruger 16 bit tegnsæt).

Jeg bruger (i en lidt anden sammenhæng) denne liste, der dækker
det mest basale win32-programmering:

advapi32.dll
comctl32.dll
comdlg32.dll
gdi32.dll
kernel32.dll
mapi32.dll
ole32.dll
oleaut32.dll
riched20.dll
shell32.dll
user32.dll
winmm.dll
winspool.drv

(winspool.drv indeholder nogle printer-funktioner).

Bemærk at visse rutiner (f.eks. CreateWindow) ikke findes
direkte i dll'erne, men er makroer for udvidede versioner med
ekstra parametre (CreateWindowEx).

ON/Fjern sneglen fra min svaradresse


Per Pedersen (15-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 15-10-03 21:48


"Ole Nielsby" <ole.nielsby@snailmail.dk> skrev i en meddelelse
news:3f8d9092$0$54800$edfadb0f@dread11.news.tele.dk...
>
> Per Pedersen <perpedersen33@hotmail.com> skrev:
>
> > Er der nogen der kan fortælle mig, hvor jeg kan finde en oversigt, over
> > hvor, i hvilke DLL'er de forskellige rutiner ligger. Det må meget gerne
> være
> > bøger.
> >
> > Jeg er vandt til at kode på AmigaOS, hvor "Runtime Linking" og dynamiske
> > allokeringer er den gængse standart.
>
> Navnet på dll-filen er tit identisk med det library som er angivet i
> dokumentationen (platform SDK).
>
> Ellers er ret nemt at flikke en lille utility sammen som loader en
> række biblioteker og prøver dem efter tur med GetProcAddress
> når du indtaster et navn; i tilfælde af en forbier prøver din utility
> igen med et tilføjet A (eller W hvis du bruger 16 bit tegnsæt).
>
> Jeg bruger (i en lidt anden sammenhæng) denne liste, der dækker
> det mest basale win32-programmering:
>
> advapi32.dll
> comctl32.dll
> comdlg32.dll
> gdi32.dll
> kernel32.dll
> mapi32.dll
> ole32.dll
> oleaut32.dll
> riched20.dll
> shell32.dll
> user32.dll
> winmm.dll
> winspool.drv
>
> (winspool.drv indeholder nogle printer-funktioner).
>
> Bemærk at visse rutiner (f.eks. CreateWindow) ikke findes
> direkte i dll'erne, men er makroer for udvidede versioner med
> ekstra parametre (CreateWindowEx).
>
> ON/Fjern sneglen fra min svaradresse
>

Jeg har desværre kun dokumentationen i elektronisk form, MSDN til Visual
Studio .NET, og jeg synes at det er noget besværligt at side og skifte rundt
imellem IDE og MSDN, (Jeg savner mit RKRM-sæt, i bogform), og sidst men ikke
mindst, så er sådan et platformsskift jo aldrig nogen nem affære.

Jeg siger pænt tak for forslaget, og håber at kunne komme lidt videre i
programmeringen, blandt andet en filtypeconverter, fra AmigaOS IFF-XXXX til
noget som de gængse Windowsprogrammer kan forstå.

Med venlig hilsen

Per Pedersen.



Mogens Hansen (15-10-2003)
Kommentar
Fra : Mogens Hansen


Dato : 15-10-03 19:31


"Per Pedersen" <perpedersen33@hotmail.com> wrote
> Er der nogen der kan fortælle mig, hvor jeg kan finde en oversigt, over
> hvor, i hvilke DLL'er de forskellige rutiner ligger. Det må meget gerne
være
> bøger.

Du kan nok ikke få svar på sådan et spørgsmål generelt.
Alle har mulighed for at lave DLL'er.
Derfor er det ikke muligt at lave en oversigt over alle DLL'er, og dermed
endnu mindre en oversigt over hvad de indeholder.
Selv hvis en sådan oversigt fandtes, ville du nok ikke være interesseret i
den - den ville være for lang.

Kan du være lidt mere specifik om hvilken information du søger og hvilket
problem du står med ?
Er det f.eks.
* relateret til et bestemt udviklingsmiljø
* et spørgsmål om hvad der skal installeres for at få noget til at virke
* et spørgsmål om hvordan man kan se hvilke funktioner der er eksporteret
for DLL'et

Venlig hilsen

Mogens Hansen



Per Pedersen (15-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 15-10-03 21:38


"Mogens Hansen" <mogens_h@dk-online.dk> skrev i en meddelelse
news:bmk3en$2bl6$1@news.cybercity.dk...
>
> "Per Pedersen" <perpedersen33@hotmail.com> wrote
> > Er der nogen der kan fortælle mig, hvor jeg kan finde en oversigt, over
> > hvor, i hvilke DLL'er de forskellige rutiner ligger. Det må meget gerne
> være
> > bøger.
>
> Du kan nok ikke få svar på sådan et spørgsmål generelt.
> Alle har mulighed for at lave DLL'er.
> Derfor er det ikke muligt at lave en oversigt over alle DLL'er, og dermed
> endnu mindre en oversigt over hvad de indeholder.
> Selv hvis en sådan oversigt fandtes, ville du nok ikke være interesseret i
> den - den ville være for lang.
>
> Kan du være lidt mere specifik om hvilken information du søger og hvilket
> problem du står med ?
> Er det f.eks.
> * relateret til et bestemt udviklingsmiljø
> * et spørgsmål om hvad der skal installeres for at få noget til at virke
> * et spørgsmål om hvordan man kan se hvilke funktioner der er
eksporteret
> for DLL'et
>
> Venlig hilsen
>
> Mogens Hansen
>
>

Det drejer sig hovedsagligt om de helt almindlige rutiner, altså så som
generel file I/O, hukommelsesallokering, og de simple grafikrutiner. Og ja
det er "et spørgsmål om hvordan man kan se hvilke funktioner der er
eksporteret for DLL'et"

Det store problem her, er at jeg ikke har et RKRM (ROM Kernel Reference
Manual)-sæt til Windows, som jeg har, og er vandt til det på AmigaOS, et sæt
manualer hvor jeg bare kan slå sådanne ting op, altså kun om de rutiner som
systemet selv tilbyder, resten koder man selv.

Håber at det hjælper med forståelsen

Med venlig hilsen

Per Pedersen



Mogens Hansen (15-10-2003)
Kommentar
Fra : Mogens Hansen


Dato : 15-10-03 22:22


"Per Pedersen" <perpedersen33@hotmail.com> wrote

[8<8<8<]
> Det drejer sig hovedsagligt om de helt almindlige rutiner, altså så som
> generel file I/O, hukommelsesallokering,

Det kan jo klares for det meste af programmeringssprogets run-time
bibliotek - altså platforms uafhængigt.

Da dette er en C og C++ relateret gruppe antager jeg at det er hvad du
bruger.
Til C:
* fopen/fclose og relaterede funktioner til generel file I/O
* malloc/free til dynamisk hukommelsesallokering

Til C++:
* iostream (fstream) og relaterede funktioner til generel file I/O
* new/delete til dynamisk hukommelsesallokering, ofte suppleret med
klasser som std::string og std::vector

Hvorvidt funktionerne ligger i et DLL og i givet fald hvilke spiller ikke
rolle for hvordan programmet skrives.
Det har primært kun en betydning for hvordan programmet skal installeres.

Det væsentlige er hvilke header-filer du skal includere for at få adgang til
funktionerne.
Så tager compiler/linker sig af hvor funktionerne kommer fra, afhængig af
hvilke options der bruges.

Mangler du kilder til programmeringssproget med tilhørende runtime library ?
Bruger du C eller C++ (eller noget andet) ?
Hvilken baggrund har du ?

> og de simple grafikrutiner.

Fra dit svar til Ole Nielsby antager jeg at du programmerer til MS-Windows
med Microsoft Visual Studio .NET.
Vil du programmere til Win32 eller .NET ?
Microsoft har slået mest på tromme for .NET de senere år.

Til Win32 programmering er bogen
Programming Windows, Fifth Edition
Charles Petzold
ISBN 1-57231-995-X

> Og ja
> det er "et spørgsmål om hvordan man kan se hvilke funktioner der er
> eksporteret for DLL'et"

Det lyder mere som "hvilke header filer skal jeg inkludere for at kunne
bruge funktioner til ...".

Venlig hilsen

Mogens Hansen



Per Pedersen (16-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 16-10-03 02:31


"Mogens Hansen" <mogens_h@dk-online.dk> skrev i en meddelelse
news:bmkdjt$2sh5$1@news.cybercity.dk...
>
> "Per Pedersen" <perpedersen33@hotmail.com> wrote
>
> [8<8<8<]
> > Det drejer sig hovedsagligt om de helt almindlige rutiner, altså så som
> > generel file I/O, hukommelsesallokering,
>
> Det kan jo klares for det meste af programmeringssprogets run-time
> bibliotek - altså platforms uafhængigt.
>
> Da dette er en C og C++ relateret gruppe antager jeg at det er hvad du
> bruger.
> Til C:
> * fopen/fclose og relaterede funktioner til generel file I/O
> * malloc/free til dynamisk hukommelsesallokering
>
> Til C++:
> * iostream (fstream) og relaterede funktioner til generel file I/O
> * new/delete til dynamisk hukommelsesallokering, ofte suppleret med
> klasser som std::string og std::vector
>
> Hvorvidt funktionerne ligger i et DLL og i givet fald hvilke spiller ikke
> rolle for hvordan programmet skrives.
> Det har primært kun en betydning for hvordan programmet skal installeres.
>
> Det væsentlige er hvilke header-filer du skal includere for at få adgang
til
> funktionerne.
> Så tager compiler/linker sig af hvor funktionerne kommer fra, afhængig af
> hvilke options der bruges.
>
> Mangler du kilder til programmeringssproget med tilhørende runtime library
?
> Bruger du C eller C++ (eller noget andet) ?
> Hvilken baggrund har du ?
>
> > og de simple grafikrutiner.
>
> Fra dit svar til Ole Nielsby antager jeg at du programmerer til MS-Windows
> med Microsoft Visual Studio .NET.
> Vil du programmere til Win32 eller .NET ?
> Microsoft har slået mest på tromme for .NET de senere år.
>
> Til Win32 programmering er bogen
> Programming Windows, Fifth Edition
> Charles Petzold
> ISBN 1-57231-995-X
>
> > Og ja
> > det er "et spørgsmål om hvordan man kan se hvilke funktioner der er
> > eksporteret for DLL'et"
>
> Det lyder mere som "hvilke header filer skal jeg inkludere for at kunne
> bruge funktioner til ...".
>
> Venlig hilsen
>
> Mogens Hansen
>
>

Jeg er ikke helt sikker på, at du har forstået mit egentlige formål med at
spørge, så det følger her:

Jeg har programmeret både C, og Assembler, på AmigaOS siden 1990, og jeg har
da i sinde at bruge de velkendte teknikker fra det selv samme system,
Runtime Linking, og dynamisk allokering, af både plads, og
hastighedsoptimeringsgrunde, og at gøre det ved hjælp af operativsystemet,
og i det her tilfælde Win32,- det giver et væsentligt mindre overhead -.

Jeg har arbejdet en hel del med fremstillingen af billedbehandlingsfiltre og
konvertere, og er derfor vandt til at ligge og rode i hukommelsen på bit
nivau, en opgave som oftest er lettere at udføre i assembler, end det er i
C. Jeg kan udemærket få standartfunktionerne til at fungere, så det er ikke
der skoen trykker, de er bare ikke særligt optimerede til de opgaver jeg
gerne vil have udført.

Mvh
Per Pedersen



Mogens Hansen (16-10-2003)
Kommentar
Fra : Mogens Hansen


Dato : 16-10-03 08:52


"Per Pedersen" <perpedersen33@hotmail.com> wrote

[8<8<8<]
> Jeg er ikke helt sikker på, at du har forstået mit egentlige formål med at
> spørge, så det følger her:

Det har du givetvis ret i.

>
> Jeg har programmeret både C, og Assembler, på AmigaOS siden 1990

Det er væsentlig information for at kunne svare konstruktivt på dit
spørgsmål.

>, og jeg har
> da i sinde at bruge de velkendte teknikker fra det selv samme system,
> Runtime Linking, og dynamisk allokering, af både plads, og
> hastighedsoptimeringsgrunde,

Hvilke performance fordele forventer du at få på Win32 ved at bruge dynamisk
linkning ?
Den _eneste_ performance forskel jeg har kunne konstatere (og jeg har kigget
_grundigt_ efter) er en lille besparelse på diskplads forbruget (svarende
til harddisk for nogle få ører). Resten er enten løgn (deling af
kodehukommelse mellem processer) eller misforståelser (mindre
hukommelsesforbrug).

Bemærk at somme tider har man et valg om man vil bruge dynamisk (DLL) eller
statisk linkning. Det gælder f.eks. C runtime bibliotekets funktioner som
malloc/free.
I andre tilfælde er der _ikke_ noget valg. Det gælder f.eks. Win32 API'et
med funktioner som CreateWindow.

> og at gøre det ved hjælp af operativsystemet,

Hvorfor, hvis man kan gøre det uafhængigt af operativsystemet.
Altså man kan f.eks. bruge C funktionerne malloc/free i stedet for Win32
API'et funktioner GlobalAlloc/GlobalFree.

> og i det her tilfælde Win32,- det giver et væsentligt mindre overhead -.

Mindre overhead end hvad ?
Har du foretaget målinger, der påviser det ?

F.eks. er det væsentligt hurtigere at bruge malloc/free and
GlobalAlloc/GlobalFree i Microsoft Visual C++.
I forbindelse med Microsoft Visual C++ V5 eller V6 blev der lagt mange
kræfter i at lave en fornuftig heap-manager. Den er lavet ved en
suballokator, som allokerer en klump fra operativsystemet, og derefter deler
det ud til applikationen i småstykker.
De tidligere versioner kaldte direkte ned i GlobalAlloc/GlobalFree.
Der var tale om en væsentlig performance forbedring i mange almindelige
scenarier.
Det skyldes at operativsystemet kun kan allokere i blokke der er et
multiplum af 4k store - en hardware pagesize. Hver gang der allokeres og
frigives skal der sættes op hardwaren at nu må man skrive på dette adresse
interval (GDT og LDT - Global Descriptor Table og Local Descriptor Table).
Det er ikke et typisk brugsmønster for en applikation, at alle allokeringer
har en størrelse som er et multiplum af 4k.

Generelt er det _meget_ kompliceret at forudsige performance.
Kun målinger kan afgøre hvad der er rigtigt og forkert. Sådanne målinger er
ofte ikke trivielle at udføre.

>
> Jeg har arbejdet en hel del med fremstillingen af billedbehandlingsfiltre
og
> konvertere, og er derfor vandt til at ligge og rode i hukommelsen på bit
> nivau, en opgave som oftest er lettere at udføre i assembler, end det er i
> C.

Smag og behag er naturligvis forskellig.
Det er generelt _meget_ svært at skrive assembler kode, der kører hurtigere
end C kode oversat med en _god_ optimerende compiler som Microsoft Visual
C++ .NET og Intel C++ V7.1.
Det skyldes primært at faktorer som instruktions pipeline og cache
komplicerer tingene meget. Det er faktorer som compileren har mulighed for
at have viden om.
De par gange hvor jeg har prøvet at skrive assembler der kører hurtigere end
tilsvarende C++ (eller C) kode med brug af alle feje kneb (kigge på
compilerenes output, anvendelse af Intel VTune, aggressive forsøg på
register allokering) har jeg tabt.

> Jeg kan udemærket få standartfunktionerne til at fungere, så det er ikke
> der skoen trykker, de er bare ikke særligt optimerede til de opgaver jeg
> gerne vil have udført.

Den nødvendige information om f.eks. Win32 funktioner til heap allokering
kan simpelt findes i hjælpesystemet som er integreret i Microsoft Visual
Studio .NET.
Slå op under "GlobalAlloc".
Klik på flue-benet for øverst til venstre på hjælpesiden, for at få
information om hvilken header fil der skal includeres (windows.h) og hvilket
import library der skal linkes med (Kernel32.lib). Det er egentlig
ligegyldigt for brugen, hvilket DLL funktionen _faktisk_ ligger i.
Klik på "heap functions" for at få en beskrivelse af gruppen af funktioner.

Gør tilsvarende med "CreateFile" for at finde Win32 funktioner til
filadgang.

Har du fået svaret på dit oprindelige spørgsmål ?

Venlig hilsen

Mogens Hansen




Per Pedersen (16-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 16-10-03 17:57


"Mogens Hansen" <mogens_h@dk-online.dk> skrev i en meddelelse
news:bmliep$1can$1@news.cybercity.dk...
>
> "Per Pedersen" <perpedersen33@hotmail.com> wrote
>
> [8<8<8<]
> > Jeg er ikke helt sikker på, at du har forstået mit egentlige formål med
at
> > spørge, så det følger her:
>
> Det har du givetvis ret i.
>
> >
> > Jeg har programmeret både C, og Assembler, på AmigaOS siden 1990
>
> Det er væsentlig information for at kunne svare konstruktivt på dit
> spørgsmål.
>
> >, og jeg har
> > da i sinde at bruge de velkendte teknikker fra det selv samme system,
> > Runtime Linking, og dynamisk allokering, af både plads, og
> > hastighedsoptimeringsgrunde,
>
> Hvilke performance fordele forventer du at få på Win32 ved at bruge
dynamisk
> linkning ?
> Den _eneste_ performance forskel jeg har kunne konstatere (og jeg har
kigget
> _grundigt_ efter) er en lille besparelse på diskplads forbruget (svarende
> til harddisk for nogle få ører). Resten er enten løgn (deling af
> kodehukommelse mellem processer) eller misforståelser (mindre
> hukommelsesforbrug).
>
> Bemærk at somme tider har man et valg om man vil bruge dynamisk (DLL)
eller
> statisk linkning. Det gælder f.eks. C runtime bibliotekets funktioner som
> malloc/free.
> I andre tilfælde er der _ikke_ noget valg. Det gælder f.eks. Win32 API'et
> med funktioner som CreateWindow.
>
> > og at gøre det ved hjælp af operativsystemet,
>
> Hvorfor, hvis man kan gøre det uafhængigt af operativsystemet.
> Altså man kan f.eks. bruge C funktionerne malloc/free i stedet for Win32
> API'et funktioner GlobalAlloc/GlobalFree.
>
> > og i det her tilfælde Win32,- det giver et væsentligt mindre overhead -.
>
> Mindre overhead end hvad ?
> Har du foretaget målinger, der påviser det ?
>
> F.eks. er det væsentligt hurtigere at bruge malloc/free and
> GlobalAlloc/GlobalFree i Microsoft Visual C++.
> I forbindelse med Microsoft Visual C++ V5 eller V6 blev der lagt mange
> kræfter i at lave en fornuftig heap-manager. Den er lavet ved en
> suballokator, som allokerer en klump fra operativsystemet, og derefter
deler
> det ud til applikationen i småstykker.
> De tidligere versioner kaldte direkte ned i GlobalAlloc/GlobalFree.
> Der var tale om en væsentlig performance forbedring i mange almindelige
> scenarier.
> Det skyldes at operativsystemet kun kan allokere i blokke der er et
> multiplum af 4k store - en hardware pagesize. Hver gang der allokeres og
> frigives skal der sættes op hardwaren at nu må man skrive på dette adresse
> interval (GDT og LDT - Global Descriptor Table og Local Descriptor Table).
> Det er ikke et typisk brugsmønster for en applikation, at alle
allokeringer
> har en størrelse som er et multiplum af 4k.
>
> Generelt er det _meget_ kompliceret at forudsige performance.
> Kun målinger kan afgøre hvad der er rigtigt og forkert. Sådanne målinger
er
> ofte ikke trivielle at udføre.
>
> >
> > Jeg har arbejdet en hel del med fremstillingen af
billedbehandlingsfiltre
> og
> > konvertere, og er derfor vandt til at ligge og rode i hukommelsen på bit
> > nivau, en opgave som oftest er lettere at udføre i assembler, end det er
i
> > C.
>
> Smag og behag er naturligvis forskellig.
> Det er generelt _meget_ svært at skrive assembler kode, der kører
hurtigere
> end C kode oversat med en _god_ optimerende compiler som Microsoft Visual
> C++ .NET og Intel C++ V7.1.
> Det skyldes primært at faktorer som instruktions pipeline og cache
> komplicerer tingene meget. Det er faktorer som compileren har mulighed for
> at have viden om.
> De par gange hvor jeg har prøvet at skrive assembler der kører hurtigere
end
> tilsvarende C++ (eller C) kode med brug af alle feje kneb (kigge på
> compilerenes output, anvendelse af Intel VTune, aggressive forsøg på
> register allokering) har jeg tabt.
>
> > Jeg kan udemærket få standartfunktionerne til at fungere, så det er ikke
> > der skoen trykker, de er bare ikke særligt optimerede til de opgaver jeg
> > gerne vil have udført.
>
> Den nødvendige information om f.eks. Win32 funktioner til heap allokering
> kan simpelt findes i hjælpesystemet som er integreret i Microsoft Visual
> Studio .NET.
> Slå op under "GlobalAlloc".
> Klik på flue-benet for øverst til venstre på hjælpesiden, for at få
> information om hvilken header fil der skal includeres (windows.h) og
hvilket
> import library der skal linkes med (Kernel32.lib). Det er egentlig
> ligegyldigt for brugen, hvilket DLL funktionen _faktisk_ ligger i.
> Klik på "heap functions" for at få en beskrivelse af gruppen af
funktioner.
>
> Gør tilsvarende med "CreateFile" for at finde Win32 funktioner til
> filadgang.
>
> Har du fået svaret på dit oprindelige spørgsmål ?
>
> Venlig hilsen
>
> Mogens Hansen
>
>
>

Jeg har efterhånden fået styr på det nu, og som sådan, da har jeg også fået
svar på mine spørgsmål.

Det som gør det her svært, er at de 2 platforme er så forskellige, på den
ene, AmigaOS, da er der kun den ene måde at gøre tingene på, og på Win32, da
kan man begge dele.

Med venlig hilsen

Per Pedersen



Mogens Hansen (16-10-2003)
Kommentar
Fra : Mogens Hansen


Dato : 16-10-03 18:27


"Per Pedersen" <perpedersen33@hotmail.com> wrote

[8<8<8<]
> Jeg har efterhånden fået styr på det nu, og som sådan, da har jeg også
fået
> svar på mine spørgsmål.

Glimrende.

>
> Det som gør det her svært, er at de 2 platforme er så forskellige, på den
> ene, AmigaOS, da er der kun den ene måde at gøre tingene på, og på Win32,
da
> kan man begge dele.

Jeg fik lige kigget på subject.
Er du med på at den normale måde at bruge funktioner i Win32 API (og andre
DLL'er) _ikke_ er via LoadLibrary og GetProcAddress ?
Normal vil man bruge import-libraries - så skal man ikke bekymre sig om at
funktionerne faktisk ligger i et DLL.
(Der er naturligvis steder hvor man har brug for LoadLibrary og
GetProcAdress, men det er sjældent)

Venlig hilsen

Mogens Hansen



Per Pedersen (16-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 16-10-03 23:17


"Mogens Hansen" <mogens_h@dk-online.dk> skrev i en meddelelse
news:bmmk37$3pr$1@news.cybercity.dk...
>
> "Per Pedersen" <perpedersen33@hotmail.com> wrote
>
> [8<8<8<]
> > Jeg har efterhånden fået styr på det nu, og som sådan, da har jeg også
> fået
> > svar på mine spørgsmål.
>
> Glimrende.
>
> >
> > Det som gør det her svært, er at de 2 platforme er så forskellige, på
den
> > ene, AmigaOS, da er der kun den ene måde at gøre tingene på, og på
Win32,
> da
> > kan man begge dele.
>
> Jeg fik lige kigget på subject.
> Er du med på at den normale måde at bruge funktioner i Win32 API (og andre
> DLL'er) _ikke_ er via LoadLibrary og GetProcAddress ?
> Normal vil man bruge import-libraries - så skal man ikke bekymre sig om at
> funktionerne faktisk ligger i et DLL.
> (Der er naturligvis steder hvor man har brug for LoadLibrary og
> GetProcAdress, men det er sjældent)
>
> Venlig hilsen
>
> Mogens Hansen
>
>

Ja, nu har jeg da ihvertfald forstået at Win32 er meget anderledes end hvad
jeg er vandt til.

Nu har jeg så et andet spørgsmål:

Er pointere fra F.eks. malloc(), også gyldige for en Win32 API funktion,
hvilket, ikke er tilfældet på AmigaOS, og det er også hovedårsagen til, at
jeg altid har brugt systemet fremfor de almindlige C funktioner.

Har du et par forslag til litteratur som jeg kan bruge til at studere Win32
platformens indre virke, og måske lidt om, hvordan den bruger hardwaren, da
jeg gerne vil lære systemet at kende på samme nivau som jeg kender AmigaOS.

Mvh
Per Pedersen



Mogens Hansen (17-10-2003)
Kommentar
Fra : Mogens Hansen


Dato : 17-10-03 06:02


"Per Pedersen" <perpedersen33@hotmail.com> wrote

[8<8<8<]
> Er pointere fra F.eks. malloc(), også gyldige for en Win32 API funktion,
> hvilket, ikke er tilfældet på AmigaOS, og det er også hovedårsagen til, at
> jeg altid har brugt systemet fremfor de almindlige C funktioner.

Ja, hvis der er tale om at Win32 API funktionen blot skal bruge en buffer.
Bufferen behøver end ikke at være allokeret med malloc - det kan sagtens
være et simpelt char-array (med de advarsler der følger med).
Det gælder f.eks. window message WM_GETTEXT, som kopierer teksten fra f.eks.
en edit-kontrol over i en buffer, eller funktionen WritePrivateProfileString
som skriver i en INI fil.

Anderledes forholder det sig naturligvis med mere komplicerede resourcer,
som vinduer (HWND), filer og tråde.
De (naturligvis) være allokeret af Win32.


>
> Har du et par forslag til litteratur som jeg kan bruge til at studere
Win32
> platformens indre virke, og måske lidt om, hvordan den bruger hardwaren,

Mit bedste bud er:
Inside Microsoft Windows 2000, Third Edition
David A. Solomon and Mark E.
ISBN 0-7556-1021-5

Men kig på hvordan man bruger Win32 først, f.eks. med den bog af Petzold,
som jeg tidligere nævnte.

Jeg har ikke læst den, så jeg skal ikke udtale mig om den er god eller
dårlig.
Det er blot der jeg ville kigge efter den slags information, som det
forekommer mig at du efterlyser.
Forfatteren er en af hovedmændende bag SysInternals
(http://www.systernals.com) og Winternals (http://www.winternals.com).
Se http://www.systernals.com/ntw2k/information.shtml for yderligere
referencer.
SysInternals har mange gode, gratis utilities til at hjælpe med at finde ud
af hvad inde i Windows.

> da
> jeg gerne vil lære systemet at kende på samme nivau som jeg kender
AmigaOS.

Det lyder ambitiøst.
God fornøjelse.


Venlig hilsen

Mogens Hansen



Per Pedersen (17-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 17-10-03 13:47


"Mogens Hansen" <mogens_h@dk-online.dk> skrev i en meddelelse
news:bmnsq3$269o$1@news.cybercity.dk...
>
> "Per Pedersen" <perpedersen33@hotmail.com> wrote
>
> [8<8<8<]
> > Er pointere fra F.eks. malloc(), også gyldige for en Win32 API funktion,
> > hvilket, ikke er tilfældet på AmigaOS, og det er også hovedårsagen til,
at
> > jeg altid har brugt systemet fremfor de almindlige C funktioner.
>
> Ja, hvis der er tale om at Win32 API funktionen blot skal bruge en buffer.
> Bufferen behøver end ikke at være allokeret med malloc - det kan sagtens
> være et simpelt char-array (med de advarsler der følger med).
> Det gælder f.eks. window message WM_GETTEXT, som kopierer teksten fra
f.eks.
> en edit-kontrol over i en buffer, eller funktionen
WritePrivateProfileString
> som skriver i en INI fil.
>
> Anderledes forholder det sig naturligvis med mere komplicerede resourcer,
> som vinduer (HWND), filer og tråde.
> De (naturligvis) være allokeret af Win32.
>
>
> >
> > Har du et par forslag til litteratur som jeg kan bruge til at studere
> Win32
> > platformens indre virke, og måske lidt om, hvordan den bruger hardwaren,
>
> Mit bedste bud er:
> Inside Microsoft Windows 2000, Third Edition
> David A. Solomon and Mark E.
> ISBN 0-7556-1021-5
>
> Men kig på hvordan man bruger Win32 først, f.eks. med den bog af Petzold,
> som jeg tidligere nævnte.
>
> Jeg har ikke læst den, så jeg skal ikke udtale mig om den er god eller
> dårlig.
> Det er blot der jeg ville kigge efter den slags information, som det
> forekommer mig at du efterlyser.
> Forfatteren er en af hovedmændende bag SysInternals
> (http://www.systernals.com) og Winternals (http://www.winternals.com).
> Se http://www.systernals.com/ntw2k/information.shtml for yderligere
> referencer.
> SysInternals har mange gode, gratis utilities til at hjælpe med at finde
ud
> af hvad inde i Windows.
>
> > da
> > jeg gerne vil lære systemet at kende på samme nivau som jeg kender
> AmigaOS.
>
> Det lyder ambitiøst.
> God fornøjelse.
>
>
> Venlig hilsen
>
> Mogens Hansen
>
>

Jeg siger mange tak for hjælpen, og glæder mig til for alvor at komme igang
med Win32.

Mvh

Per Pedersen



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste