mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[NTDLL:LDR] SAL improvements and fixes
- Convert some notations to SAL2 - "Name" parameter in LdrGetProcedureAddress/LdrpGetProcedureAddress should be optional - "DllCharacteristics" parameter in LdrGetDllHandle should be optional
This commit is contained in:
parent
46b4b5581d
commit
be5c889cdf
6 changed files with 63 additions and 39 deletions
|
@ -98,12 +98,14 @@ LdrpWalkImportDescriptor(IN LPWSTR DllPath OPTIONAL,
|
||||||
|
|
||||||
|
|
||||||
/* ldrutils.c */
|
/* ldrutils.c */
|
||||||
NTSTATUS NTAPI
|
NTSTATUS
|
||||||
LdrpGetProcedureAddress(IN PVOID BaseAddress,
|
NTAPI
|
||||||
IN PANSI_STRING Name,
|
LdrpGetProcedureAddress(
|
||||||
IN ULONG Ordinal,
|
_In_ PVOID BaseAddress,
|
||||||
OUT PVOID *ProcedureAddress,
|
_In_opt_ _When_(Ordinal == 0, _Notnull_) PANSI_STRING Name,
|
||||||
IN BOOLEAN ExecuteInit);
|
_In_opt_ _When_(Name == NULL, _In_range_(>, 0)) ULONG Ordinal,
|
||||||
|
_Out_ PVOID *ProcedureAddress,
|
||||||
|
_In_ BOOLEAN ExecuteInit);
|
||||||
|
|
||||||
PLDR_DATA_TABLE_ENTRY NTAPI
|
PLDR_DATA_TABLE_ENTRY NTAPI
|
||||||
LdrpAllocateDataTableEntry(IN PVOID BaseAddress);
|
LdrpAllocateDataTableEntry(IN PVOID BaseAddress);
|
||||||
|
|
|
@ -98,8 +98,9 @@ LdrpMakeCookie(VOID)
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrUnlockLoaderLock(IN ULONG Flags,
|
LdrUnlockLoaderLock(
|
||||||
IN ULONG Cookie OPTIONAL)
|
_In_ ULONG Flags,
|
||||||
|
_In_opt_ ULONG Cookie)
|
||||||
{
|
{
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
@ -170,9 +171,10 @@ LdrUnlockLoaderLock(IN ULONG Flags,
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrLockLoaderLock(IN ULONG Flags,
|
LdrLockLoaderLock(
|
||||||
OUT PULONG Disposition OPTIONAL,
|
_In_ ULONG Flags,
|
||||||
OUT PULONG_PTR Cookie OPTIONAL)
|
_Out_opt_ PULONG Disposition,
|
||||||
|
_Out_opt_ PULONG_PTR Cookie)
|
||||||
{
|
{
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
BOOLEAN InInit = LdrpInLdrInit;
|
BOOLEAN InInit = LdrpInLdrInit;
|
||||||
|
@ -440,8 +442,9 @@ LdrLoadDll(IN PWSTR SearchPath OPTIONAL,
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrFindEntryForAddress(PVOID Address,
|
LdrFindEntryForAddress(
|
||||||
PLDR_DATA_TABLE_ENTRY *Module)
|
_In_ PVOID Address,
|
||||||
|
_Out_ PLDR_DATA_TABLE_ENTRY *Module)
|
||||||
{
|
{
|
||||||
PLIST_ENTRY ListHead, NextEntry;
|
PLIST_ENTRY ListHead, NextEntry;
|
||||||
PLDR_DATA_TABLE_ENTRY LdrEntry;
|
PLDR_DATA_TABLE_ENTRY LdrEntry;
|
||||||
|
@ -519,11 +522,12 @@ LdrFindEntryForAddress(PVOID Address,
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrGetDllHandleEx(IN ULONG Flags,
|
LdrGetDllHandleEx(
|
||||||
IN PWSTR DllPath OPTIONAL,
|
_In_ ULONG Flags,
|
||||||
IN PULONG DllCharacteristics OPTIONAL,
|
_In_opt_ PWSTR DllPath,
|
||||||
IN PUNICODE_STRING DllName,
|
_In_opt_ PULONG DllCharacteristics,
|
||||||
OUT PVOID *DllHandle OPTIONAL)
|
_In_ PUNICODE_STRING DllName,
|
||||||
|
_Out_opt_ PVOID *DllHandle)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PLDR_DATA_TABLE_ENTRY LdrEntry;
|
PLDR_DATA_TABLE_ENTRY LdrEntry;
|
||||||
|
@ -802,10 +806,11 @@ Quickie:
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrGetDllHandle(IN PWSTR DllPath OPTIONAL,
|
LdrGetDllHandle(
|
||||||
IN PULONG DllCharacteristics OPTIONAL,
|
_In_opt_ PWSTR DllPath,
|
||||||
IN PUNICODE_STRING DllName,
|
_In_opt_ PULONG DllCharacteristics,
|
||||||
OUT PVOID *DllHandle)
|
_In_ PUNICODE_STRING DllName,
|
||||||
|
_Out_ PVOID *DllHandle)
|
||||||
{
|
{
|
||||||
/* Call the newer API */
|
/* Call the newer API */
|
||||||
return LdrGetDllHandleEx(LDR_GET_DLL_HANDLE_EX_UNCHANGED_REFCOUNT,
|
return LdrGetDllHandleEx(LDR_GET_DLL_HANDLE_EX_UNCHANGED_REFCOUNT,
|
||||||
|
@ -820,10 +825,11 @@ LdrGetDllHandle(IN PWSTR DllPath OPTIONAL,
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrGetProcedureAddress(IN PVOID BaseAddress,
|
LdrGetProcedureAddress(
|
||||||
IN PANSI_STRING Name,
|
_In_ PVOID BaseAddress,
|
||||||
IN ULONG Ordinal,
|
_In_opt_ _When_(Ordinal == 0, _Notnull_) PANSI_STRING Name,
|
||||||
OUT PVOID *ProcedureAddress)
|
_In_opt_ _When_(Name == NULL, _In_range_(>, 0)) ULONG Ordinal,
|
||||||
|
_Out_ PVOID *ProcedureAddress)
|
||||||
{
|
{
|
||||||
/* Call the internal routine and tell it to execute DllInit */
|
/* Call the internal routine and tell it to execute DllInit */
|
||||||
return LdrpGetProcedureAddress(BaseAddress, Name, Ordinal, ProcedureAddress, TRUE);
|
return LdrpGetProcedureAddress(BaseAddress, Name, Ordinal, ProcedureAddress, TRUE);
|
||||||
|
|
|
@ -2249,11 +2249,12 @@ lookinhash:
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrpGetProcedureAddress(IN PVOID BaseAddress,
|
LdrpGetProcedureAddress(
|
||||||
IN PANSI_STRING Name,
|
_In_ PVOID BaseAddress,
|
||||||
IN ULONG Ordinal,
|
_In_opt_ _When_(Ordinal == 0, _Notnull_) PANSI_STRING Name,
|
||||||
OUT PVOID *ProcedureAddress,
|
_In_opt_ _When_(Name == NULL, _In_range_(>, 0)) ULONG Ordinal,
|
||||||
IN BOOLEAN ExecuteInit)
|
_Out_ PVOID *ProcedureAddress,
|
||||||
|
_In_ BOOLEAN ExecuteInit)
|
||||||
{
|
{
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
UCHAR ImportBuffer[64];
|
UCHAR ImportBuffer[64];
|
||||||
|
|
|
@ -22,7 +22,13 @@ VOID NTAPI AVrfpNtdllHeapFreeCallback(PVOID AllocationBase, SIZE_T AllocationSiz
|
||||||
// DPFLTR_VERIFIER_ID
|
// DPFLTR_VERIFIER_ID
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS NTAPI AVrfpLdrGetProcedureAddress(IN PVOID BaseAddress, IN PANSI_STRING Name, IN ULONG Ordinal, OUT PVOID *ProcedureAddress);
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
AVrfpLdrGetProcedureAddress(
|
||||||
|
_In_ PVOID BaseAddress,
|
||||||
|
_In_opt_ _When_(Ordinal == 0, _Notnull_) PANSI_STRING Name,
|
||||||
|
_In_opt_ _When_(Name == NULL, _In_range_(>, 0)) ULONG Ordinal,
|
||||||
|
_Out_ PVOID *ProcedureAddress);
|
||||||
|
|
||||||
static RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpNtdllThunks[] =
|
static RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpNtdllThunks[] =
|
||||||
{
|
{
|
||||||
|
@ -116,9 +122,18 @@ PVOID AVrfpFindReplacementThunk(PVOID Proc)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS NTAPI AVrfpLdrGetProcedureAddress(IN PVOID BaseAddress, IN PANSI_STRING Name, IN ULONG Ordinal, OUT PVOID *ProcedureAddress)
|
NTSTATUS NTAPI
|
||||||
|
AVrfpLdrGetProcedureAddress(
|
||||||
|
_In_ PVOID BaseAddress,
|
||||||
|
_In_opt_ _When_(Ordinal == 0, _Notnull_) PANSI_STRING Name,
|
||||||
|
_In_opt_ _When_(Name == NULL, _In_range_(>, 0)) ULONG Ordinal,
|
||||||
|
_Out_ PVOID *ProcedureAddress)
|
||||||
{
|
{
|
||||||
NTSTATUS (NTAPI *oLdrGetProcedureAddress)(IN PVOID BaseAddress, IN PANSI_STRING Name, IN ULONG Ordinal, OUT PVOID *ProcedureAddress);
|
NTSTATUS(NTAPI *oLdrGetProcedureAddress)(
|
||||||
|
_In_ PVOID BaseAddress,
|
||||||
|
_In_opt_ _When_(Ordinal == 0, _Notnull_) PANSI_STRING Name,
|
||||||
|
_In_opt_ _When_(Name == NULL, _In_range_(>, 0)) ULONG Ordinal,
|
||||||
|
_Out_ PVOID *ProcedureAddress);
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PVOID Replacement;
|
PVOID Replacement;
|
||||||
|
|
||||||
|
|
|
@ -89,8 +89,8 @@ NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrGetProcedureAddress(
|
LdrGetProcedureAddress(
|
||||||
_In_ PVOID BaseAddress,
|
_In_ PVOID BaseAddress,
|
||||||
_In_ PANSI_STRING Name,
|
_In_opt_ _When_(Ordinal == 0, _Notnull_) PANSI_STRING Name,
|
||||||
_In_ ULONG Ordinal,
|
_In_opt_ _When_(Name == NULL, _In_range_(>, 0)) ULONG Ordinal,
|
||||||
_Out_ PVOID *ProcedureAddress
|
_Out_ PVOID *ProcedureAddress
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,7 @@ NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrGetDllHandle(
|
LdrGetDllHandle(
|
||||||
_In_opt_ PWSTR DllPath,
|
_In_opt_ PWSTR DllPath,
|
||||||
_In_ PULONG DllCharacteristics,
|
_In_opt_ PULONG DllCharacteristics,
|
||||||
_In_ PUNICODE_STRING DllName,
|
_In_ PUNICODE_STRING DllName,
|
||||||
_Out_ PVOID *DllHandle
|
_Out_ PVOID *DllHandle
|
||||||
);
|
);
|
||||||
|
@ -140,8 +140,8 @@ NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
LdrGetProcedureAddress(
|
LdrGetProcedureAddress(
|
||||||
_In_ PVOID BaseAddress,
|
_In_ PVOID BaseAddress,
|
||||||
_In_ PANSI_STRING Name,
|
_In_opt_ _When_(Ordinal == 0, _Notnull_) PANSI_STRING Name,
|
||||||
_In_ ULONG Ordinal,
|
_In_opt_ _When_(Name == NULL, _In_range_(>, 0)) ULONG Ordinal,
|
||||||
_Out_ PVOID *ProcedureAddress
|
_Out_ PVOID *ProcedureAddress
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue