In order to have your DirectX content properly pre-multiplied, you will need a custom ID3D11BlendState. The D3D11_BLEND_DESC struct should be set up as follows:
AlphaToCoverageEnable = FALSE;
IndependentBlendEnable = FALSE;
RenderTarget[0].BlendEnable = TRUE;
// dest.rgb = src.rgb * src.a + dest.rgb * (1 - src.a)
RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
// dest.a = 1 - (1 - src.a) * (1 - dest.a) [the math works out]
RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_INV_DEST_ALPHA;
RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ONE;
RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
Create the blend state with ID3D11Device::CreateBlendState, then set it with ID3D11DeviceContext::OMSetBlendState. Then, just set up the rest of your Direct3D pipeline as normal, and the output to the render-target should have pre-multiplied alpha with correct alpha channel output, for use with Direct2D, WPF, or any other API requiring pre-multiplied content.
Note that if you are using Direct3D 9, the concepts are the same but the API is different. Look here for a good place to get started if you're using 9.