DCSIMG
64 bit - Pavel's Blog
Sign in | Join | Help

Pavel's Blog

Pavel is a software guy that is interested in almost everything
software related... way too much for too little time

Browse by Tags

COM Fun with Microsoft Agent
25 February 11 03:44 PM | pavely | 1 comment(s)
Whenever I teach COM interoperability in .NET, I try to show some nice demo for this. The classic is to use one of the Office applications (such as Word) to do some automation by creating a document, adding some text, etc. This is effective enough but not really fun. A much more fun way is to use the Microsoft Agent technology. MS Agent is discontinued as far as further development is concerned, but it’s still fun and great for (at least) learning purposes. What is MS Agent? Its most well known appearance...
Dealing With Native DLLs in .NET “AnyCPU” Builds
13 February 11 09:27 PM | pavely | 2 comment(s)
A .NET application can be compiled using the “AnyCPU” configuration, meaning the application runs as 32 bit on a 32 bit OS, and 64 on a 64 bit OS. As long as the application is purely managed, everything should be just fine. However, if the application must use some native DLL through interop (e.g. P/Invoke), then “AnyCPU” may be an issue. A native DLL cannot be both 32 and 64 bit – it’s one or the other. The traditional solution to the problem is to switch the .NET build to a “Win32” or “x64” configuration...
Update to my Virtual Memory Map Viewer
01 June 09 03:51 PM | pavely | with no comments
I’ve uploaded an updated version of my Virtual Memory Map Viewer on CodePlex . This version has both 32 bit and a 64 bit executables, allowing viewing of 64 bit processes (as well as 32 bit). Quite interesting to see those large address spaces… You can download the latest from CodePlex .
64 bit process addresses
12 April 09 09:00 PM | pavely | 11 comment(s)
native 64 bit processes get a huge address space of 8 TB (instead of the usual 2GB of 32 bit processes). However, to actually get this address space range, the executable image must be linked with the LARGEADDRESSAWARE flag. If it's not, only the lower 2GB will be available. Why is that? Why doesn't a native 64 bit process get automatically the larger address space? I'll leave you to think about this a bit - I'll answer in a few paragraphs. Here's a simple test program: int _tmain...