1

Windows SSPI呼び出しAcquireCredentialsHandleは、クレデンシャルハンドルの有効期限が切れる時期を示すタイムスタンプを返します。TimeStampドキュメントは、構造が構造と同じ形式でなければならないと言っているようですFILETIMEFILETIMEただし、この関数を「Kerberos」パッケージで使用すると、 :として扱われた場合の結果は意味がありません。

#include <stdio.h>
#define SECURITY_WIN32
#include <windows.h>
#include <security.h>

int main() {

  TimeStamp expiry;
  int aquireCode;
  CredHandle credHandle;
  BOOL timeOk;
  SYSTEMTIME sysTime;

  aquireCode = AcquireCredentialsHandle(
          NULL,
          "Kerberos",
          SECPKG_CRED_OUTBOUND,
          NULL,
          NULL,
          NULL,
          NULL,
          &credHandle,
          &expiry);

  printf("result = %d\n", aquireCode);
  printf("upper = %d (%X)\n", expiry.HighPart, expiry.HighPart);
  printf("lower = %d (%X)\n", expiry.LowPart, expiry.LowPart);

  timeOk = FileTimeToSystemTime((FILETIME*)&expiry, &sysTime);
  printf("time covert ok = %d\n", timeOk);
  printf("%4d/%02d/%02d %02d:%02d:%02d\n", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond);
}

私のシステムでは、これは次のように出力します。

result = 0
upper = 2147483530 (7FFFFF8A)
lower = -1488801793 (A742AFFF)
time covert ok = 1
30828/09/13 12:48:05

それがではない場合、それFILETIMEは何ですか?

4

0 に答える 0