4.1.4.3 Server Behavior of the IDL_DRSCrackNames Method
Informative summary of behavior: The IDL_DRSCrackNames method is a generic method that is used to look up information in the directory. The most common usage is looking up directory object names that are provided in one format (for example, SPNs) and returning them in a different format (for example, DNs). One special mode occurs when the input format is not specified, in which case the server tries to "guess" the format of the name by following some heuristics. The method can also be used to look up generic information in the directory, such as the list of sites or the list of servers in a specific site.
-
ULONG IDL_DRSCrackNames( [in, ref] DRS_HANDLE hDrs, [in] DWORD dwInVersion, [in, ref, switch_is(dwInVersion)] DRS_MSG_CRACKREQ *pmsgIn, [out, ref] DWORD *pdwOutVersion, [out, ref, switch_is(*pdwOutVersion)] DRS_MSG_CRACKREPLY *pmsgOut) msgIn: DRS_MSG_CRACKREQ_V1 msgOut: DS_NAME_RESULTW ULONG result ValidateDRSInput(hDrs, 12) pdwOutVersion^ := 1 pmsgOut^.V1.pResult^.cItems := 0 pmsgOut^.V1.pResult^.rItems := null if dwInVersion ≠ 1 then return ERROR_INVALID_PARAMETER endif msgIn := pmsgIn^.V1 if DS_NAME_FLAG_GCVERIFY in msgIn.dwFlags and not IsGC() then return ERROR_DS_GCVERIFY_ERROR endif /* Enable FPO resolution for non-DC callers. */ if ClientUUID(hDrs) = NTDSAPI_CLIENT_GUID then msgIn.dwFlags := msgIn.dwFlags + {DS_NAME_FLAG_PRIVATE_RESOLVE_FPOS} endif result = CrackNames(pmsgIn^.V1, ADR(msgOut)) if(result = ERROR_SUCCESS) then pmsgOut^.V1.pResult := ADR(msgOut) endif return result