For pork, you need to cook/smoke it to an internal temp of at least 145f. The temp should be taken in the middle of the thickest portion, with the probe not touching fat or bone.
Personally for ham I like to take mine to an internal temp of 150f. Once reaching that temp remove from the smoker and foil. Let rest 30-45 minutes before slicing.
For ham I like a simple rub. I avoid adding salt as the curing process already should have added salt. I use pepper, garlic, onion and usually some chipotle powder.
For wood I like a sweet wood such as Apple, cherry, pecan, peach or a combination of them.
I will also make a simple glaze. We like the sweet-heat so I will reduce down apricot or peach preserves with pineapple juice, beer, pepper, fresh garlic, brown sugar, mustard, hot sauce. I apply the glaze for the last hour of cooking. Usually about when the ham reaches an internal temp of 120-125. I will apply a few coats every 15 minutes or so.
As for time. That will depend on many things. Pit temp, size of ham bone in or no bone, weather. The last bone in ham I did took about 5 hours with the pit running @ 265f. Then rested for 45 minutes. I believe the ham was 10-12 pounds.
The nice thing about ham is it will hold for a good period of time. If you finish early you can wrap it in a double layer of foil. Wrap in towels or blankets and place in a cooler and it will keep at a safe temp for up to 4 hours.