enumerazione WS_READ_OPTION (webservices.h)
Specifica se è necessario un valore e la modalità di allocazione del valore.
Sintassi
typedef enum {
WS_READ_REQUIRED_VALUE = 1,
WS_READ_REQUIRED_POINTER = 2,
WS_READ_OPTIONAL_POINTER = 3,
WS_READ_NILLABLE_POINTER = 4,
WS_READ_NILLABLE_VALUE = 5
} WS_READ_OPTION;
Costanti
WS_READ_REQUIRED_VALUE Valore: 1 L'opzione specifica che il valore deve esistere nel contenuto XML. Il chiamante deve specificare lo spazio di archiviazione in cui leggere il tipo di primo livello. Le dimensioni dello spazio di archiviazione specificato dal chiamante variano in base al tipo deserializzato, come indicato di seguito:
Tipi di puntatore (WS_WSZ_TYPE e WS_XML_BUFFER_TYPE), non può essere utilizzato con WS_READ_REQUIRED_VALUE. Il WS_READ_REQUIRED_POINTER è consigliabile usare invece il valore . Se il valore non è presente nel codice XML letto, verrà restituito un errore di WS_E_INVALID_FORMAT . Vedere Valori restituiti di Servizi Web Windows. |
WS_READ_REQUIRED_POINTER Valore: 2 L'opzione specifica che il valore deve esistere nel contenuto XML. Il valore deserializzato viene sempre allocato nel WS_HEAP, indipendentemente dalle dimensioni. Viene restituito il puntatore al valore deserializzato. Quando si usa questa opzione, il chiamante deve passare l'indirizzo di un puntatore e le dimensioni di un puntatore, indipendentemente dal tipo da deserializzare. Se il valore non è presente, verrà restituito un errore. NULL non verrà mai restituito quando viene usata questa opzione. Se il parametro value è facoltativo, usare WS_READ_OPTIONAL_POINTER. |
WS_READ_OPTIONAL_POINTER Valore: 3 L'opzione specifica che il valore non deve esistere nel contenuto XML. Il valore deserializzato viene sempre allocato nel WS_HEAP, indipendentemente dalle dimensioni. Viene restituito il puntatore al valore deserializzato. Quando si usa questa opzione, il chiamante deve passare l'indirizzo di un puntatore e le dimensioni di un puntatore, indipendentemente dal tipo da deserializzare. Se il valore non è presente nel codice XML letto, la funzione succeed e NULL verranno restituiti per il valore . Un'applicazione che usa questa opzione deve prestare attenzione a verificare la presenza di NULL prima di accedere al valore. Se non è mai previsto un valore NULL , usare WS_READ_REQUIRED_POINTER. |
WS_READ_NILLABLE_POINTER Valore: 4 L'opzione specifica che il valore può essere nullo o mancante nel contenuto XML. Il valore deserializzato viene sempre allocato nel WS_HEAP, indipendentemente dalle dimensioni. Viene restituito il puntatore al valore deserializzato. Quando si usa questa opzione, il chiamante deve passare l'indirizzo di un puntatore e le dimensioni di un puntatore, indipendentemente dal tipo da deserializzare. Se l'elemento è nil o mancante nel codice XML letto, la funzione avrà esito positivo e verrà restituito un puntatore NULL . Se l'elemento non è nullo nel codice XML letto, il valore viene restituito normalmente. Un'applicazione che usa questa opzione deve prestare attenzione a verificare la presenza di NULL prima di accedere al valore. Se non è mai previsto un valore NULL , usare WS_READ_REQUIRED_POINTER. Questa opzione non è supportata in combinazione con WS_TYPE_MAPPING nelle API che leggono codice XML, incluse le chiamate WsReadType e WsReadElement . |
WS_READ_NILLABLE_VALUE Valore: 5 L'opzione specifica che il valore può essere nullo o mancante nel contenuto XML. Il chiamante deve specificare lo spazio di archiviazione in cui leggere il tipo di primo livello. Se l'elemento XML è nil o mancante, viene restituito un valore nil. Se l'elemento XML è non-nil, quindi il valore viene deserializzato normalmente. Questa opzione non è supportata in combinazione con WS_TYPE_MAPPING nelle API che leggono codice XML, incluse le chiamate WsReadType e WsReadElement . Questa opzione è supportata solo per i tipi seguenti, elencati di seguito. che hanno un modo intrinseco per rappresentare un valore nullo. Vedere la documentazione per ogni tipo per informazioni su come viene rappresentato nil. |
Commenti
Ogni WS_READ_OPTION illustra quando è necessario specificare un oggetto WS_HEAP . A seconda della funzione, potrebbe comunque essere possibile passare un parametro heap NULL in questo caso; vedere la documentazione relativa alla funzione specifica per informazioni dettagliate sull'uso di un heap predefinito se il parametro heap è NULL.
Di seguito sono riportati alcuni aspetti da considerare durante la deserializzazione dei valori in un oggetto heap (WS_HEAP):
- I valori deserializzati rimangono allocati fino a quando l'heap non viene liberato (WsFreeHeap) o reimpostato (WsResetHeap).
- Ogni volta che i valori vengono deserializzati, vengono aggiunti all'heap (anziché sostituire i valori esistenti).
- Se si verificano errori durante la funzione di deserializzazione e la funzione ha esito negativo, la memoria allocata dall'oggetto heap fino a quando l'errore non verrà rilasciato.
- Le dimensioni dell'heap possono essere usate per limitare le allocazioni totali effettuate durante la deserializzazione. Le dimensioni massime dell'heap possono essere determinate nel modo seguente:
- Determinare le dimensioni massime, in byte, di ogni valore che verrà allocato nell'heap durante la deserializzazione. Tenere presente che le dimensioni delle strutture di dati deserializzate possono variare in base alla piattaforma.
- Ogni matrice è considerata un valore. Si noti che le dimensioni effettive di un elemento nella matrice possono essere influenzate dall'allineamento richiesto dell'elemento.
- Arrotondare le dimensioni massime di ogni valore a un limite di 16 byte.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 R2 [app desktop | App UWP] |
Intestazione | webservices.h |