С этим вроде разобрался. А в dllMain я должен что-то со стеком делать, чтобы было корректно, просто stdcall функция по-моему должна сама очищать стек от параметров?
дык, если вы на масме пишете - вообще ничего руками можно не делать. Задайте правильную конвенцию вызова и укажите параметры, как указал shchetinin. Масм сам вначале процедуры вставит код инициализации стекового фрейма, а перед каждым ret - код освобождения фрейма, если требует конвенция. Да и к параметрам можно будет обращаться просто поименно.