Если вы используете C # 4.0, то ответ dtb - правильный подход.В C # 4.0 добавлена поддержка необязательных параметров, и они работают так же хорошо с функциями PInvoke.
До C # 4.0 не было возможности воспользоваться дополнительным параметром.Ближайшим эквивалентом является определение одной функции, которая переходит в другую.
[DllImport("mydll.dll", EntryPoint = "somefunction")]
static extern int somefunction(int param1, IntPtr param2);
static int somefunction(int param1) {
someFunction(param1, IntPtr.Zero);
}