Domanda

Sto lavorando alla migrazione di una dll ISAPI a 32 bit a 64 bit. Sto usando Visual Studio 2008. Sto riscontrando problemi con il puntatore EXTENSION_CONTROL_BLOCK nella funzione HttpExtensionProc. I puntatori char all'interno della struttura EXTENSION_CONTROL_BLOCK non sono validi al momento dell'entrata nella funzione; sono etichettati con all'interno della finestra dell'orologio. Se modifico manualmente i puntatori di caratteri scambiando i primi 4 byte e gli ultimi 4 byte del puntatore, vengono visualizzati i valori corretti. Qualche idea sul perché ciò accada?

Questa è la finestra di controllo prima di modificare il puntatore, prestare attenzione a lpszQueryString: testo del link alt text

Questa è la finestra di controllo dopo aver modificato il puntatore, prestare attenzione a lpszQueryString: testo del link alt text

È stato utile?

Soluzione

Il problema era che stavo costruendo con un allineamento a 1 byte. Ho dovuto fare questo:

#pragma pack(push, 8)
#include <httpext.h>
#pragma pack(pop)

Grazie a nobugz per la risposta.

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