ADsGetObject函数需要很长时间才能返回

时间:2011-11-04 05:20:37

标签: windows winapi authentication windows-7 active-directory

在用户身份验证过程中,我正在进行ADsGetObject函数调用,该函数至少需要15秒才能返回。我的机器中有近20个组。调用堆栈如下。延迟的原因是什么?

00fcc230 77215ccc 7548179c 000005f9 00000000 ntdll!KiFastSystemCallRet
00fcc234 7548179c 000005f9 00000000 00000000 ntdll!NtWaitForSingleObject+0xc
00fcc2a0 7706efa3 000005f9 ffffffff 00000000 KERNELBASE!WaitForSingleObjectEx+0x98
00fcc2b8 7682c1bf 000005f9 ffffffff 00000000 kernel32!WaitForSingleObjectExImplementation+0x75
00fcc2d0 7682c179 00000000 ffffffff 000003e5 RPCRT4!UTIL_WaitForSyncIO+0x1c
00fcc2ec 7682d488 00000000 00fcc30c 00000000 RPCRT4!UTIL_GetOverlappedResultEx+0x62
00fcc314 7682c0f1 001978c0 0000005c 00238348 RPCRT4!NMP_SyncSendRecv+0xb6
00fcc340 7682ce5d 00238228 0000005c 00fcc464 RPCRT4!OSF_CCONNECTION::TransSendReceive+0xc5
00fcc3c4 7682cdc9 00197790 001a9478 0024e9a8 RPCRT4!OSF_CCONNECTION::SendFragment+0x295
00fcc420 7682cb39 00000018 00000000 ffffffff RPCRT4!OSF_CCALL::SendNextFragment+0x302
00fcc474 7682ca56 0024e9a8 00fcc50c 00fcc4b4 RPCRT4!OSF_CCALL::FastSendReceive+0x239
00fcc494 7682c9df 00fcc4b4 00fcc50c 00fcc538 RPCRT4!OSF_CCALL::SendReceiveHelper+0x55
00fcc4bc 7683c1fc 00238360 00fcc538 00fcc538 RPCRT4!OSF_CCALL::SendReceive+0x43
00fcc4d0 7683c6cf 00fcc50c 74ab1c60 00000001 RPCRT4!I_RpcSendReceive+0x29
00fcc4e4 7683c69d 00fcc538 002383a4 00fcc538 RPCRT4!NdrSendReceive+0x31
00fcc4f4 76895744 7d52523d 00000000 00000000 RPCRT4!NdrpSendReceive+0xc
00fcc90c 74ab5096 74ab1c60 74ab45de 00fcc92c RPCRT4!NdrClientCall2+0x1a6
00fcc924 74ab4d7d 00000000 00000000 00000000 LOGONCLI!DsrGetDcNameEx2+0x19
00fcc998 74ab4cc8 00000000 00000000 00000000 LOGONCLI!DsGetDcNameWithAccountW+0x17e
00fcc9c0 69b49029 00000000 0024f560 00000000 LOGONCLI!DsGetDcNameW+0x20
00fcc9fc 69b48f85 0024f560 00fcca30 00000000 adsnt!DsGetDcNameNTWrapper+0x5c
00fcca3c 69b49207 0024f560 00000001 00fccf04 adsnt!WinNTGetCachedObject+0x26e
00fcced0 69b4557e 0024f560 00fccf00 00fccf04 adsnt!WinNTGetCachedName+0x11a
00fcd988 69b41ddd 00fcd9a0 00fcda48 00fcda38 adsnt!HeuristicGetObject+0x110
00fcda14 69b41cc6 0022d67c 00fcda48 00fcda38 adsnt!GetObjectW+0x1a4
00fcda64 69b41c77 001bb080 0022d67c 00fcdafc adsnt!CWinNTProvider::ResolvePathName+0x3e
00fcda80 76e2cba7 00232a30 001bb080 0022d67c adsnt!CWinNTProvider::ParseDisplayName+0x26
00fcdacc 76e2cad6 001bb080 0022d67c 00fcdafc ole32!FindClassMoniker+0x8b
00fcdb04 6f1535c9 001bb080 0022d67c 00fcdb28 ole32!MkParseDisplayName+0xbb
00fcdb3c 6f1534db 0022d67c 00aa2d68 00fcdb84 ACTIVEDS!GetObjectW+0x117
00fcdb54 007d5ec7 0022d67c 00aa2d68 00fcdb84 ACTIVEDS!ADsGetObject+0x15

1 个答案:

答案 0 :(得分:0)

使用Process Monitor了解花了这么长时间。可能是某种超时。您将在事件日志中看到它。也许你得到一个有趣的案例,如Mark with his slow logons;)