Newsgroup: it.comp.programmare.win32
Titolo: Per chi vuole farsi una risata (amara)

Tratto da MSDN, documentazione dell'api HttpSendRequest:
...
When using optional data, be aware of the following caveat: the size of the
optional data buffer, specified with the dwOptionalLength parameter, must be
either less than 32 bytes or greater than approximately 150 bytes.
Otherwise, the HttpSendRequest function fails.
...
Perchč? Why? Pourquoi? Warum? Porqué?
Ciao
GG

 GG
ciao

 Perchč? Why? Pourquoi? Warum? Porqué?
il paragrafo che hai riportato non esiste
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.19. C, C++ and ASM developers
                              and beta testers are welcome!

 il paragrafo che hai riportato non esiste
Mi sembra che tu sia un po' troppo irrispettoso nei confronti degli altri
(mi riferisco anche a post precedenti).
Pensi che _GG_ sia un cretino che posta "estratti" inesistenti???
La prossima volta informati:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcesdkr/htm
/_wcesdk_win32_httpsendrequest.asp
Kiuhnm

 esdkr/htm /_wcesdk_win32_httpsendrequest.asp
Ehi, ma questo è l'SDK di Windows CE! Mi sa che non è quello giusto, 
che ne dici?


 che ne dici?
E allora?
Qui non siamo si icp.win32? Che cosa leggi nel link, verso la fine?
_GG_ non ha semplicemente scritto:
"Tratto da MSDN, documentazione dell'api HttpSendRequest:"
e io non posso che confermare: esiste.
Kiuhnm

 dettagli fondamentali...
balle. Non si documenta mai cosa faccia realmente una funzione, sennò 
ti giochi o la possibilità di reimplementarla meglio nella prossima 
release, o tutto il parco software esistente. E' esattamente perchè è 
documentata solo l'interfaccia che i programmi scritti con criterio 
funzionano su Windows 95 come su Windows XP. Con un po' di magia puoi 
addirittura far girare i programmi di Windows 1.0 (cioè programmi 
scritti 17 anni fa) su Windows 2000, sempre grazie al livello di 
astrazione


 release, o tutto il parco software esistente. E' esattamente perchè è
Ci sono vari livelli per documentare che cosa fa esattamente una funzione.
Non è assolutamente richiesto scendere in dettagli legati
all'implementazione.
Io la penso esattamente nel modo opposto: lo pseudo codice fa sì che chi
programma sappia esattamente che cosa è legato all'implementazione e che
cosa non lo è.
Molti prg. usano impropriamente le API perchè la spiegazione è confusa e
lacunosa.
Se fosse stato presente uno pseudo-codice (non ho detto un listato
assembly!) non ci sarebbero stati tutti questi problemi.
L'Intel fortunatamente l'ha capito e ha inserito lo pseudo-codice di ogni
istruzione.
Pensi che le istruzioni siano implementate esattamente nello stesso modo su
386, 486, Pentium, Athlon, ecc...?
No, però lo pseudo-codice è sempre valido e anzi è il metro di misura.
Purtroppo la lingua parlata non è abbastanza sintetica e precisa. I
matematici non per altro usano una simbologia tutta loro anzichè esprimersi
semplicemente tramite parole...
L'uno e l'altro e preferibile, ma alla fine la legge è lo pseudo-codice.
Kiuhnm

 istruzione.
C'e` differenza fra qualche centinaio di opcode assembly che fanno
operazioni piu` o meno elementari, e qualche decina di migliaia di API
che costituiscono un sistema operativo e svolgono ciascuna operazioni
molto piu` complesse. Non trovi? :)
--
Lorenzo

 molto piu` complesse. Non trovi? :)
Leggiti sul secondo manuale dell'Intel (386+) la documentazione sulle
istruzioni CALL e INT, poi ne riparliamo...
Kiuhnm

 che cercavo era scritta piu` o meno chiaramente su MSDN.
Occhei. A volte non è semplicissimo reperirle, proprio volendo. O non è che
si capisca proprio proprio bene quello che succede.
Vuoi un esempio? Una cosa che mi ha sempre incuriosito ma che non ho
approfondito: Shell_NotifyIcon - quando gli passi un'icona, puoi poi
distruggerla (che tanto Explorer ne fa una copia) o non puoi rilasciare
l'handle?
Sull'SDK non l'ho trovato (non l'ho cercato granché, invero, e non ho un SDK
aggiornato).
Ciao,
zello

il paragrafo che hai riportato non esiste
... ma ne sei sicura ????
prova a cercare nella MSDN e vedrai a questo link al frase
incriminata.
mk:@MSITStore:D:\Programmi\Microsoft%20Visual%20Studio\MSDN\2000OCT\1033
non so se può interessare ma è riferita alla versione x Windows CE
saluti a tutti.
Carlo
------------------

 funziona un tubo senza una patch).
Questo non e` un problema della portabilita` delle funzioni di Windows,
quanto della pessima qualita` di XP. Se prendi un altro sistema della
famiglia NT scritto decisamente meglio, ossia Windows 2000, la
situazione cambia parecchio.
--
Lorenzo

 l'handle?
In effetti piu` si guarda quella funzione piu` ci si accorge che e` una
porcata, sia in quanto a funzionamento che in quanto a documentazione.
Anni fa ho pure scritto un articolo per CP che spiegava come rimediare
ad alcune sue carenze... :)
Questo e` un caso diverso da quelli di cui discutevamo: qui c'e` una
vera e propria carenza di documentazione necessaria, non una volonta` di
nascondere dei "funzionamenti interni".
(in ogni caso sembra che l'Explorer faccia una copia dell'icona, e che
dopo la chiamata tu la possa distruggere.)
--
Lorenzo




 sulle istruzioni CALL e INT, poi ne riparliamo...
No, ne riparleremo quando avrai capito la differenza


astrazione
Sono troppo vecchio per ricordare il DOS?
Esistevano le documentazioni ufficiali (come quella della IBM con
l'intero BIOS disassemblato e commentato) e la lista di Ralf Brown (a
quei tempi non c'erano le API, ma gli interrupt).
Nessuno ha mai avuto problemi. Perche' non c'era il casino di
Internet? Il Plug'n'Play, USB, FireWire, le reti wireless? No, perche'
chi programmava era maggiormente rispettato.
Oggi gli sviluppatori sono ancora l'asso nella manica dei produttori
di SO, ma non sono piu' considerate persone, ma numeri che alzano e
abbassano il valore dei titoli in borsa.
Si vede chiaramente nella politica di Sun con Java, un tiro alla fune
fra la casa madre e le software house.
Conclusione. Non si puo' documentare solo l'interfaccia, non si vive
di sole Gui. Si deve documentare bene quello che si ha, solo cosi' si
evitano schermi blu e figure di merda.
Alla prossima versione del SO? Se e' fatta dagli sviluppatori non ci
saranno problemi, se e' fatta dai commerciali saranno guai.
Windows e' fatto nell'ufficio marketing, quindi sono guai. _GG_ ha
ragione a ridere amaro. E qui il thread mi sembra chiuso.
Paolo

 sarebbe, altrimenti?
provato ad usare SoftICE?
-- 
Rhymes
rhy...@myself.com
" ride or die "

Direi che sono d'accordo con tutto quello che hai scritto (wow, non mi
capita spesso!).
Semplicemente non approvo le posizioni di chi dice che lo pseudo-codice non
serve a niente. Penso che più si sappia, meglio sia. Per me un sistema
operativo dovrebbe mettere a disposizione API di tutti i livelli (dal più
baso al più alto). Nelle API della Microsoft ci sono molte lacune e la cosa
che dispiace è che non ha nessuna intenzione di colmarle nemmeno su
insistente richiesta (anzi, ostacola i prg. aggiungendo "obsfucator" e roba
varia...).
[vogliamo parlare del TCP ultra menomato? E io che volevo fare hacking con
poca fatica! Tocca installarsi Linux :-)))]
Chi vuole la portabilità userà solo le API portabili, invece chi vuole
spremere appieno il proprio os le userà tutte.
Kiuhnm
P.S. L'ho buttata un po' sul ridere, comunque la penso all'incirca così.

 No, ne riparleremo quando avrai capito la differenza
Allora penso che non ne riparleremo più...
A questo mondo non si può essere sempre d'accordo su tutto (guarda la
politica...)
Kiuhnm

 ragione a ridere amaro. E qui il thread mi sembra chiuso.
Concordo pienamente su tutto (Ralph Brown mi ha fuso la stampante!!!), ma
come vedi c'è chi la pensa diversamente (un infiltrato della Microsoft?
Chissà...scherzo (npM)).
Comunque ogni tanto leggo una funzione documentata nella DDK e mi vengono
mille dubbi, tipo che cosa effettivamente faccia quella funzione, se sia una
virtualizzazione o se veramente lo stato del processore venga modificato,
ecc... Inizio a programmare e non funziona un tubo!
Disassemblo le varie funzioni e dopo giorni (quando capisco l'inghippo)
dedico 2 o 3 ore del mio tempo a maledire la Microsoft.
Adesso ho imparato: chi fa da sè fa per tre! Devo analizzare la tavola GDT?
Lo faccio per conto mio che tanto sono 4 istruzioni in croce, anzichè
perdere giorni a capire che accidenti fa la Microsoft nelle sue funzioni
(più disassemblo Window e più mi rendo conto di come è stato programmato
male: funzioni che in 1000 righe di codice alla fine (passando da 16 a 32
bit e viceversa almeno un paio di volte) non fanno altro che eseguire 4
somme .....mah.....)).
Quando ha programmato Windows la Microsoft ha pensato a tutto fuorchè
all'efficienza :-(
[e all'Intel non è certo dispiaciuto!]
Kiuhnm

 Allora penso che non ne riparleremo più...
Vediamo come ti suona questa: Intel vuole che le software house 
scrivano compilatori e sistemi operativi per la loro piattaforma, 
quindi documenta dettagliatamente tutti gli opcode. Ma con dello 
pseudocodice che, *sicuramente*, nasconde il reale funzionamento 
interno, perchè una cosa che Intel *non* vuole è una piattaforma 
concorrente. E' più chiara la differenza adesso?


 vuole spremere appieno il proprio os le userà tutte.
Sulla mailing list di OSR la risposta ad affermazioni del genere è 
"dimmi come si chiamano il tuo prodotto e la casa che lo produce, così 
potrò tenerne alla larga me e tutti quelli che conosco"


 potrò tenerne alla larga me e tutti quelli che conosco"
Numega, SoftIce.
Sarà per questo che non lo usa nessuno?
Kiuhnm

 concorrente. E' più chiara la differenza adesso?
E' per questo che i processori AMD fanno così schifo e non funziona niente?
Quello che dici non ha senso. I programmatori leggono lo pseudo-code e lo
rispettano.
Qualsiasi processore rispetti lo stesso pseudo-code, rispetta
automaticamente anche il programmatore.
Kiuhnm
P.S. Mi sono proprio stancato....questo thread sta diventando noioso. Ciao!

disimparare va da Bill)
Sarà per questo che MS assume tanti stupidi che non sanno programmare
(mi vengono ad esempio in mente Herb Sutter e Stanley Lippman)?
-- 
Marco Barisione (ICQ 84277092)

 wrote in message
news:h82hhuobrbe0ltfis...@4ax.com...


Vogliono semplicemente disimparare per ricominciare dall'inizio: questa sì
che è passione!
Kiuhnm
P.S. Non so se è una politica o cos'altro, ma che Windows sia poco
efficiente e troppo instabile è un dato di fatto. Basta aprire 30 finestre
di Explorer per vedere il mondo cambiare asse di rotazione... Su Linux ne ho
aperte ben 50 (di Netscape) e non ho notato il minimo rallentamento (era
veramente sbalordito, lo devo ammettere). Da questo posso dedurre che la mia
impressione che Windows non fosse programmato troppo bene (esplorando col
SoftIce qua e là) era fondata.
E Windows XP? E' solamente più lento di Win98 che terrò finchè non sarà
proprio più supportato.

veramente sbalordito, lo devo ammettere).
Ho provato su winxp e 50 netscape funzionano perfettamente.


 Ho provato su winxp e 50 netscape funzionano perfettamente.
Io le ho provate su un PII e devo dire che non funzionavano tanto bene...su
Linux sě.
Se vuoi fare un confronto devi usare lo stesso hardware oppure trovare i
*tuoi* valori limite che saranno ovviamente diversi dai miei
(l'"esperimento" l'ho fatto qualche anno fa su Win 98).
Kiuhnm
P.S. Comunque ci hai navigato un po', vero?

P.S. Comunque ci hai navigato un po', vero?
Siamo OT, quindi direi di finire il discorso; comunque sì e funzionava
(IE invece fa pasticci dopo una decina di finestre aperte).


Windows 2000, la Microsoft ci perderà
Mi vuoi spiegare allora perche' molti programmi che girano sotto
Win2000 non girano sotto WinXP? E i casini con i driver che mancano?
Secondo te tutti avevano bypassato le Api? Un po' pesante come
affermazione...
Perche' non arriviamo ad un compromesso? Tu affermi che la Microsoft
non e' poi cosi' fantastica e io affermo che la Microsoft non e' poi
cosi' decadente.
Ok?
Paolo

somme .....mah.....)).
Penso seriamente che la gente in gamba che circola in questo ng
dovrebbe spendere qualche minuto e mettere in piedi una Faq con le
loro esperienze.
Chiacchierare non porta da nessuna parte. E fra un mese ricaschiamo
tutti in queste discussioni sterili.
Paolo

 funziona niente?
 
Uhm, non voglio pensare a quante silicon revision interne avra` fatto l'AMD prima di ottenere una seppur vaga compatibilita` con le CPU Intel. :)
 
-- 
Lorenzo

 (più disassemblo Window e più mi rendo conto di come è stato >programmato
si può disassemblare?  non è protetto ?
ciaociao

 si può disassemblare?  non è protetto ?
certo che si può :-) fosse "protetto" non girerebbe nemmeno :-)


 certo che si può :-) fosse "protetto" non girerebbe nemmeno :-)
Tra "disassemblabile" e "protetto" c'è molta differenza e comunque il codice
criptato, per esempio, non è propriamente disassemblabile :-) [parlo di
protezioni che decriptano, eseguono e ricriptano, non scoprendo mai più di
5-6 istruzioni]
E comunque non ci vuole molto a fare saltare un qualsiasi debugger (da
codice in Ring 0 e Windows ne ha in abbondanza)
.
.
.
.
pushfd
cli
.
.
.
.
call    FunzioneBastarda
; segue codice che non usa ESP!
xor    edx, edx
mov    eax, ebx
mul    ecx
ecc...
.
.
.
popfd
.
.
.
ret
-----
FunzioneBastarda:
.
.
.
falso codice per il confronto di stringhe, ecc... per confondere un po' le
acque...
.
.
.
pop    eax            ; Ret Address!!!
mov    esp, OFFSET32 VeryImportantData!!!
jmp    eax
.
.
.
altro codice per confondere ancor di più le acque
.
.
.
ret        ; non verrà mai eseguito
Durante il tracing (dopo la call) il nostro debugger inizierà a
sovrascrivere dati importanti e all'uscita dopo qualche secondo Windows
andrà sicuramente in crash :-)))
Il "cracker" comunque potrebbe accorgersi del cambiamento del registro ESP,
giusto?
Allora, se siamo proprio bastardi dentro (e in questi casi io lo sono),
anzichè modificare ESP stesso, scambio gli indirizzi fisici! Quello logico
(e lineare) resta lo stesso però adesso il debugger accedendo allo stack sta
cancellando VeryImportantData :-)
Si potrebbero anche inserire dei check point temporali mediante RDTSC. Se
Windows vede che il tempo di esecuzione tra due check point è aumentato di
più di N volte, allora c'è sicuramente un guardone...
Oppure:
add    esp, 10h    ; scopro lo stack in modo che il debugger, se c'è, lo
usi!
mov    eax, 4
.
.
.
.
mov    eax, [esp-4]
cmp    eax, OriginalData
jne    ModifiedByDebugger!!!
Scusami per questo quasi OT, ma non ho resistito...
Kiuhnm

(mi vengono ad esempio in mente Herb Sutter e Stanley Lippman)?
Vuoi dire che HS e SL sono stupidi o che se ne sono andati da M$?
Ciao
--
Luigi


ma si può anche fare legalmente ?
in ogni caso ci devono essere dei sistemi per proteggerlo !
altrimenti uno che copiasse delle funzioni quando mai verrebbe beccato ?
(non credo che ci sia gente alla Microsoft che si metterebbe a controllare
il codice assembler di un eventuale SO che sviluppo io per vedere se è stato
copiato da win)
ah...già che ci sono, mi spiegheresti cosa fa esattamente un Kernel Debugger
e quando e da chi viene utilizzato ?
ciao
grazie

 e quando e da chi viene utilizzato ?
Visto che l'hai chiesto a lei le cedo con piacere la parola...
Kiuhnm

Vuoi dire che HS e SL sono stupidi o che se ne sono andati da M$?
Mai sentito parlare di ironia? :-)


>Mai sentito parlare di ironia? :-)
Ironia? E cosa č? :)
Il fatto č che volevo sapere come mai hai tirato in ballo proprio HS e SL...
penso dovesserň centrare qualcosa con M$ no?
Altrimenti, si tratta di una battuta un po strana %)
ciao
--
Luigi

penso dovesserò centrare qualcosa con M$ no?
Lavorano per MS eppure sono ottimi programmatori conosciutissimi.


>Lavorano per MS eppure sono ottimi programmatori conosciutissimi.
Infatti, ma non sapevo lavorassero per MS...
ciao

 E comunque non ci vuole molto a fare saltare un qualsiasi debugger
io non ho mai letto la parola "debugger". Sei tu che sei ossessionato 
perchè quando eri piccolo Windows 98 ti ha dato un lecca lecca e poi ha 
approfittato di te
