Use shader with multiple passes to draw 2D sprites

For each character in my 2D scene I would like to use a shader that has two passes; the first draws the shadow of the character and the second draws the character normally. However I don’t know how to apply multiple passes. The following only draws the first pass, the same is true when just passing in the effect in spriteBatch.Begin.
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, transformMatrix); foreach (var pass in effect.CurrentTechnique.Passes) { pass.Apply(); spriteBatch.Draw(texture, Vector2.Zero, Color.White); } spriteBatch.End();