http://www.gamedev.net/topic/451617-how-the-stencil-buffer-works/
The order of operations goes like this (assuming the stencil test is enabled):
1) Perform stencil test. If failed, perform StencilFail operation and discard pixel. If passed, go to step 2.
2) Perform depth test. If failed, perform StencilZFail operation and discard pixel. If passed, perform StencilPass operation and write pixel color/depth.
So to answer your questions, the stencil test is based solely on the current value in the stencil buffer, the stencil reference value, and the stencil mask. It has to be, since it's done first. The depth test is performed only if the stencil test passes or is disabled.
The DX documentation can provide more details.
深度缓存和模板缓存操作顺序如下(假定模板缓存开启)
(1)执行模板测试,如果失败,执行模板测试失败的操作并且丢弃