Hi all, Using Dependency Walker to extract the function names from the advapi32.dll, I have compiled a list of implemented, stubbed, semi-stubbed, missing, and questionable api functions of advapi32.dll. As for the percentage that is completed, using implemented / total * 100, advapi32.dll is 50% complete. With this format, developers can see what has already been done and what has yet to be done. It puts the whole process into a proper perspective. If anyone has any ideas about this or suggestions, let me know.
-- James Hawkins
advapi32 -------- Advanced API services library supporting numerous APIs including many security and registry calls. API Details ----------- implemented: AccessCheck AddAccessAllowedAce AddAccessDeniedAce AddAce AdjustTokenPrivileges AllocateAndInitializeSid AllocateLocallyUniqueId AreAnyAccessesGranted CloseServiceHandle CopySid CreateServiceA CreateServiceW CryptAcquireContextA CryptCreateHash CryptDecrypt CryptDeriveKey CryptDestroyHash CryptDestroyKey CryptEncrypt CryptExportKey CryptGenKey CryptGenRandom CryptGetHashParam CryptGetKeyParam CryptGetProvParam CryptGetUserKey CryptHashData CryptHashSessionKey CryptImportKey CryptReleaseContext CryptSetHashParam CryptSetKeyParam CryptSetProvParam CryptSetProviderA CryptSignHashA CryptVerifySignatureA DeleteAce EqualPrefixSid EqualSid FindFirstFreeAce FreeSid GetAce GetAclInformation GetLengthSid GetSecurityDescriptorControl GetSecurityDescriptorDacl GetSecurityDescriptorGroup GetSecurityDescriptorLength GetSecurityDescriptorOwner GetSecurityDescriptorSacl GetSidIdentifierAuthority GetSidLengthRequired GetSidSubAuthority GetSidSubAuthorityCount GetTokenInformation GetUserNameA GetUserNameW ImpersonateSelf InitializeAcl InitializeSecurityDescriptor InitializeSid IsValidAcl IsValidSecurityDescriptor IsValidSid LookupPrivilegeValueA LookupPrivilegeValueW MakeAbsoluteSD MakeSelfRelativeSD OpenProcessToken OpenThreadToken RegCloseKey RegConnectRegistryA RegConnectRegistryW RegCreateKeyA RegCreateKeyExA RegCreateKeyExW RegCreateKeyW RegDeleteKeyA RegDeleteKeyW RegDeleteValueA RegDeleteValueW RegEnumKeyA RegEnumKeyExA RegEnumKeyExW RegEnumKeyW RegEnumValueA RegEnumValueW RegFlushKey RegGetKeySecurity RegLoadKeyA RegLoadKeyW RegNotifyChangeKeyValue RegOpenKeyA RegOpenKeyExA RegOpenKeyExW RegOpenKeyW RegQueryInfoKeyA RegQueryInfoKeyW RegQueryMultipleValuesA RegQueryMultipleValuesW RegQueryValueA RegQueryValueExA RegQueryValueExW RegQueryValueW RegSaveKeyA RegSaveKeyW RegSetValueA RegSetValueExA RegSetValueExW RegSetValueW ReportEventA ReportEventW SetKernelObjectSecurity SetSecurityDescriptorDacl SetSecurityDescriptorGroup SetSecurityDescriptorOwner SetSecurityDescriptorSacl StartServiceA StartServiceCtrlDispatcherA StartServiceCtrlDispatcherW StartServiceW stubbed: AbortSystemShutdownA AbortSystemShutdownW AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarmW AddAuditAccessAce BackupEventLogA BackupEventLogW ChangeServiceConfigA ChangeServiceConfigW ClearEventLogA ClearEventLogW CloseEventLog ControlService DeleteService DeregisterEventSource GetFileSecurityA GetFileSecurityW GetNumberOfEventLogRecords GetOldestEventLogRecord ImpersonateLoggedOnUser LockServiceDatabase LookupAccountNameA LookupAccountNameW LookupPrivilegeNameA LookupPrivilegeNameW NotifyBootConfigStatus NotifyChangeEventLog OpenBackupEventLogA OpenBackupEventLogW OpenEventLogA OpenEventLogW PrivilegeCheck QueryServiceConfigA QueryServiceConfigW ReadEventLogA ReadEventLogW RegReplaceKeyA RegReplaceKeyW RegRestoreKeyA RegRestoreKeyW RegSetKeySecurity RegUnLoadKeyA RegUnLoadKeyW RegisterEventSourceA RegisterEventSourceW RegisterServiceCtrlHandlerA RegisterServiceCtrlHandlerW RevertToSelf SetFileSecurityA SetFileSecurityW SetServiceStatus SetThreadToken SetTokenInformation UnlockServiceDatabase semi-stub: LookupAccountSidA LookupAccountSidW OpenSCManagerA OpenSCManagerW OpenServiceA OpenServiceW QueryServiceStatus missing: AdjustTokenGroups AreAllAccessesGranted CreatePrivateObjectSecurity CreateProcessAsUserA CreateProcessAsUserW DestroyPrivateObjectSecurity DuplicateToken EnumDependentServicesA EnumDependentServicesW GetKernelObjectSecurity GetPrivateObjectSecurity GetServiceDisplayNameA GetServiceDisplayNameW GetServiceKeyNameA GetServiceKeyNameW ImpersonateNamedPipeClient InitiateSystemShutdownA InitiateSystemShutdownW IsTextUnicode LogonUserA LogonUserW LookupPrivilegeDisplayNameA LookupPrivilegeDisplayNameW MapGenericMask ObjectCloseAuditAlarmA ObjectCloseAuditAlarmW ObjectOpenAuditAlarmA ObjectOpenAuditAlarmW ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarmW PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarmW QueryServiceLockStatusA QueryServiceLockStatusW QueryServiceObjectSecurity RegRemapPreDefKey SetAclInformation SetPrivateObjectSecurity SetServiceBits SetServiceObjectSecurity questionable: EnumServicesStatusA EnumServicesStatusW