LsaCallAuthenticationPackage возвращает ERROR_INVALID_PARAMETER 87 (0x57) при попытке удалить конкретный билет - PullRequest
1 голос
/ 16 марта 2010

Я пытаюсь удалить конкретный тикет из кэша, используя LsaCallAuthenticationPackage. Я всегда получаю ERROR_INVALID_PARAMETER 87 в статусе пакета. Что может быть причиной? Вот мой код (все остальные шаги выполнены успешно):

KERB_QUERY_TKT_CACHE_REQUEST tktCacheRequest = {
         KerbQueryTicketCacheMessage};

  void* pRep;
  DWORD cbRep;
  NTSTATUS pkgStatus;
  NTSTATUS s = LsaCallAuthenticationPackage(
                * hLsa, * nAuthPackage,
                &tktCacheRequest, sizeof tktCacheRequest,
                &pRep, &cbRep, &pkgStatus);

pTktCacheResponse = (KERB_QUERY_TKT_CACHE_RESPONSE ) pRep;
для (ULONG i = 0; i CountOfTickets; ++ i) { KERB_TICKET_CACHE_INFO & ti = pTktCacheResponse-> Tickets [i]; если (/ некое условие /) { KERB_PURGE_TKT_CACHE_REQUEST req; req.MessageType = KerbPurgeTicketCacheMessage; req.ServerName = ti.ServerName; req.RealmName = ti.ServerName; req.LogonId.HighPart = req.LogonId.LowPart = 0;

       NTSTATUS pkgStatus = 0;
       PVOID pReturnBuffer = NULL;
       ULONG nReturnedBufferLen = 0;
       NTSTATUS s = LsaCallAuthenticationPackage(
           hLsa, nAuthPackage,
           &req, sizeof (req) *2,
           0, 0, &pkgStatus);
       ULONG winErr = LsaNtStatusToWinError(pkgStatus);
   }
}

Спасибо !!

1 Ответ

1 голос
/ 18 марта 2010

Я должен использовать модель распределения памяти, как в первоначальном списке Microsoft (найден в примерах пакета Microsoft Windows Platform SDK), и получил, что он работает.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...