Domanda

Ho una funzione che restituisce un valore DWORD diverso per ogni caso v'è un errore. Così ho seguito sono elencati:

#define ERR_NO_DB_CONNECTION    0x90000
#define ERR_DB_NOT_OPEN         0x90001
#define ERR_DB_LOCKED           0x90002
#define ERR_DB_CONN_LOST        0x90003

Ora, torno quei valori in caso di errore. Ho bisogno di tornare anche il valore della GetLastError nello stesso rendimento.

No, non posso leggere in un secondo momento.

Ho provato combinandola modi diversi, ad esempio:

return ERR_DB_NOT_OPEN + GetLastError();

e quindi estrarre l'errore sottraendo il valore di ERR_DB_NOT_OPEN ma dal momento che ho bisogno di utilizzare questo funzioni in cui ci possono essere diversi valori di ritorno si può ottenere molto complessa per farlo.

Esiste un modo per raggiungere questo obiettivo? Voglio dire, unire il valore + GetLastError ed estrarli in seguito? Codice è apprezzato.

Grazie

Jess.

È stato utile?

Soluzione

di Microsoft documentazione , il i codici di errore di sistema massimo fuori a 15999 (0x3E7F). Questo significa che hai l'intera parola superiore con cui giocare. Avrete bisogno di accorciare i vostri codici di errore per adattarsi a 4 cifre esadecimali, quindi è possibile utilizzare alcune macro di Windows per combinare e dividerle:

return MAKELPARAM(GetLastError(), ERR_DB_NOT_OPEN);

int lasterror = LOWORD(result);
int code = HIWORD(result);

Altri suggerimenti

So che questo post è vecchio, ma solo nel caso in ... risposta complementare a Mark. A seguito di regione codice è disponibile per voi per definire i propri errori.

  

I codici di errore sono valori a 32 bit (bit 31 è il bit più significativo).   Bit 29 è riservato per i codici di errore definiti dall'applicazione; sistema di no   codice di errore ha questo bit impostato. Se si sta definendo un codice di errore per   l'applicazione, impostare questo bit per indicare che il codice di errore ha   stato definito dall'applicazione e per garantire che il codice di errore   Non contrasta con eventuali codici di errore definiti dal sistema.

https: // msdn.microsoft.com/en-us/library/windows/desktop/ms680627%28v=vs.85%29.aspx

È possibile combinarli in una stringa (un array di caratteri) e poi dividerli dal chiamante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top