Simply put, you cannot store a 64-bit address in a 32-bit pointer. Therefore, if your code involves passing back and forth pointers to the operating system, as device drivers usually do, this will not end well.
Drivers are often associated with moving data between fiscal devices (such as a disk) and memory. The driver will be prompted to transfer the X sectors of the disk to memory at address Y.
On a 64-bit OS, Y will be a 64-bit address, so your 32-bit driver will not be able to handle this. And, of course, the problem is that the size of the passed pointer is twice as expected, therefore, if it starts it, there will probably be a stamp over all the wrong memory ...
source share