Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    45

    [c] Struttura con array[1]

    un ciao a tutti.
    vorrei capire nelle 2 strutture riportate qui sotto gli array "Handles[1] e FileName[1]"
    se non sbaglio sono array ad una dimensione,ad esempio "FileName" è di tipo WCHAR
    che rappresenta un carattete unicode,come puo' contenere un nome intero?
    forse perchè " *PFILE_NAME_INFORMATION" è un puntatore?.

    codice:
    typedef struct _SYSTEM_HANDLE
    { 
    	ULONG			uProcessId;
    	UCHAR			ObjectType;
    	UCHAR			Flags;		
    	USHORT			Handle;
    	PVOID			pObject;
    	ACCESS_MASK		GrantedAccess;
    } SYSTEM_HANDLE, *PSYSTEM_HANDLE;
    
    
    typedef struct _SYSTEM_HANDLE_INFORMATION   //Information Class 16
    {
    	ULONG	Count;	    //numero di registi nel'array Handles	
    	SYSTEM_HANDLE	Handles[1];
    } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
    poi questa struttura:

    codice:
    typedef struct _FILE_NAME_INFORMATION	// Information Classes 9 and 21
    {
        ULONG FileNameLength;   //lunghezza del nome del file	
        WCHAR FileName[1];      //nome completo del file.		
    } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
    un grazie anticipato.

  2. #2
    Quelle sono strutture che non userai mai direttamente, ma piuttosto ti verranno restituiti dei puntatori ad esse da API di Windows. Nello specifico, le API in questione non allocano solo lo spazio per la struttura, ma per la struttura più tutti i dati da memorizzare nell'ultimo campo; l'array ad un elemento è semplicemente un modo per renderti più semplice accedere ai dati.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Quando si posta del codice, si devono utilizzare gli appositi tag di formattazione, come riportato nel Regolamento interno al punto 6.


    Ho corretto io il primo post.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    45
    vi ringrazio per la rispsta.
    scusate se non ho seguito il regolamento,in futuro staro' piu attento.
    per quanto riguarda la domanda non ho capito cosa si intende per
    "più tutti i dati da memorizzare nell'ultimo campo".
    grazie per eventuali risposte.

  5. #5
    Quelle strutture di fatto vanno a contenere un numero di dati non noto al momento della compilazione (la lunghezza del nome del file non può essere conosciuta a priori, così come il numero di SYSTEM_HANDLE, per cui quelle strutture dichiarano l'array in questione convenzionalmente come di un solo elemento. È possibile accedere ad ulteriori elementi però perché le funzioni che restituiscono puntatori a quelle strutture allocano la memoria aggiuntiva necessaria subito dopo la struttura.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    45
    penso di aver capito.
    ti ringrazio,ciao.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.