Raymond has an interesting post on the history of boolean across different APIs.  Because each different kind of boolean has a different size/interpretation for true/false, when writing a p/invoke definition it's important to use the MarshalAs attribute to specify which kind of boolean you mean.