Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    58

    [C] Assegnazione di tipo PLARGE_INTEGER

    Ciao a tutti ! in una funzione devo dare come parametro un valore di tipo PLARGE_INTEGER...ho visto che LARGE_INTEGER serve per gestire valori a 64 bit..come faccio io a inizializzare ed assegnare un valore a questo tipo di variabile? se provo un cast
    (PLARGE_INTEGER) 1000000
    mi da errore...
    il valore che devo mettere è dell ordine di grandezza di 10^6.
    il cast funziona se metto al posto della costante 10^6 una variabile qualsiasi a 32 bit, che basterebbe, ma nn so se effettivamente andrebbe a buon fine...il fatto è che sto compilando un driver quindi non posso controllare ogni volta che valore viene immesso...
    ciao!!

  2. #2

    Re: [C] Assegnazione di tipo PLARGE_INTEGER

    Originariamente inviato da ingtabby
    Ciao a tutti ! in una funzione devo dare come parametro un valore di tipo PLARGE_INTEGER...ho visto che LARGE_INTEGER serve per gestire valori a 64 bit..come faccio io a inizializzare ed assegnare un valore a questo tipo di variabile? se provo un cast
    (PLARGE_INTEGER) 1000000
    mi da errore...
    il valore che devo mettere è dell ordine di grandezza di 10^6.
    il cast funziona se metto al posto della costante 10^6 una variabile qualsiasi a 32 bit, che basterebbe, ma nn so se effettivamente andrebbe a buon fine...il fatto è che sto compilando un driver quindi non posso controllare ogni volta che valore viene immesso...
    ciao!!
    Dal nome azzardo che PLARGE_INTEGER stia per Pointer to LARGE_INTEGER e che quindi da qualche parte ci sia una define del tipo

    #define PLARGE_INTEGER LARGE_INTEGER*

    Se dovesse essere così per assegnare un valore di tipo LARGE_INTEGER alla cella di memoria puntata dal puntatore di tipo PLARGE_INTEGER devi solo scrivere *nomeVariabileDiTipoPLARGEINTEGER = valore_da asseganre;
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Se pli e' il tuo parametro PLARGE_INTEGER, per assegnare il valore, devi scrivere

    *pli.QuadPart = 1000000;

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    58
    Ok, questo è utile...ma mi sono spiegato male... la funzione a cui devo passare il valore di 10^6 accetta solo PLARGE_INTEGER...siccome i vari valori (tipo il 10^6) devono essere inseriti in un array, vorrei nn dover costruire un array di LARGE_INTEGER, perche consumerei troppa memoria...quindi volevo sapere se io faccio un array di unsigned int e poi nella funzione come parametro (passando l'indice dell array) faccio un cast a PLARGE_INTEGER (cosa che il compilatore esegue senza errori), rischio di passare le info sbagliate?
    Grazie!

  5. #5
    Originariamente inviato da ingtabby
    Ok, questo è utile...ma mi sono spiegato male... la funzione a cui devo passare il valore di 10^6 accetta solo PLARGE_INTEGER...siccome i vari valori (tipo il 10^6) devono essere inseriti in un array, vorrei nn dover costruire un array di LARGE_INTEGER, perche consumerei troppa memoria...quindi volevo sapere se io faccio un array di unsigned int e poi nella funzione come parametro (passando l'indice dell array) faccio un cast a PLARGE_INTEGER (cosa che il compilatore esegue senza errori), rischio di passare le info sbagliate?
    Grazie!
    Direi proprio di si, e tutta questa preoccupazione per la memoria la vedo ingiustificata.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    58
    ok grazie allora trasformero l'array da int a large_integer...
    ciao!

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da ingtabby
    Ok, questo è utile...ma mi sono spiegato male... la funzione a cui devo passare il valore di 10^6 accetta solo PLARGE_INTEGER...siccome i vari valori (tipo il 10^6) devono essere inseriti in un array, vorrei nn dover costruire un array di LARGE_INTEGER, perche consumerei troppa memoria...quindi volevo sapere se io faccio un array di unsigned int e poi nella funzione come parametro (passando l'indice dell array) faccio un cast a PLARGE_INTEGER (cosa che il compilatore esegue senza errori), rischio di passare le info sbagliate?
    Grazie!
    Se devi passare il puntatore all'array, fai un errore grave.

    Se devi passare un puntatore ad un singolo elemento LARGE_INTEGER, allora l'array lo puoi costruire anche con gli unsigned int e usare una singola variabile temporanea LARGE_INTEGER che passerai per indirizzo dopo averle assegnato il valore preso dall'array.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    58
    Originariamente inviato da oregon
    Se pli e' il tuo parametro PLARGE_INTEGER, per assegnare il valore, devi scrivere

    *pli.QuadPart = 1000000;
    Ciao ho provato ma da sempre errore..nota che lo compilo col ddk, serve per l implementazione del driver...
    in pratica devo dare un valore a questa funzione
    KeDelayExecutionThread(KernelMode, FALSE, ..)
    il terzo parametro deve essere per l appunto un PLARGE_INTEGER..

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    E quale codice avevi usato ?

    Dovrebbe essere qualcosa di simile (ometto gli altri parametri) ...

    codice:
    LARGE_INTEGER li;
    
    li.QuadPart = 1000000;
    
    KeDelayExecutionThread(....., &li);

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    58
    fatto cosi ma mi da errore per il "."

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.