どうやればアドレスを渡してキャストすることができるか分かりません。教えてもらえませんか?

private delegate int EnumWindowsDelegate(IntPtr hWnd, int lParam);
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int EnumWindows(EnumWindowsDelegate lpEnumFunc, int lParam);
----

IntPtr[] ahWnd = new ahWnd[0];  //←これをコールバックに渡したい

EnumWindows(new EnumWindowsDelegate(delegate(IntPtr hWnd, int lParam)
{
 IntPtr[] ahWndTmp = (IntPtr[])lParam;   //←ここで指定する方法が分からない

 //配列に追加
 Array.Resize(ref ahWndTmp, ahWndTmp.Length + 1);
 ahWndTmp[ahWndTmp.Length - 1] = hWnd;
 }
 return 1;
}), (int) ahWnd);  //←ここで指定する方法が分からない