> Гы. Есть даже простенькое описание прототипов функций. Вот > только как таблицу их адресов получить полностью не > описано:)
Ну тут все просто:
#define IOCTL_FIPS_GET_POINTERS CTL_CODE(FILE_DEVICE_FIPS, 1, METOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _FIPS_POINTERS_LARGE {
PVOID FipsDesKey;
PVOID FipsDes;
PVOID Fips3Des3Key;
PVOID Fips3Des;
PVOID FipsSHAInit;
PVOID FipsSHAUpdate;
PVOID FipsSHAFinal;
PVOID FipsCBC;
PVOID FIPSGenRandom;
PVOID FipsBlockCBC;
PVOID FipsHmacSHAInit;
PVOID FipsSHAUpdate;
PVOID FipsHmacSHAFinal;
PVOID HmacMD5Init;
PVOID HmacMD5Update;
PVOID HmacMD5Final;
} FIPS_POINTERS_LARGE, *PFIPS_POINTERS_LARGE;
typedef struct _FIPS_POINTERS_SMALL {
PVOID FipsDesKey;
PVOID FipsDes;
PVOID Fips3Des3Key;
PVOID Fips3Des;
PVOID FipsSHAInit;
PVOID FipsSHAUpdate;
PVOID FipsSHAFinal;
PVOID FipsCBC;
PVOID FIPSGenRandom;
PVOID FipsBlockCBC;
} FIPS_POINTERS_SMALL, *PFIPS_POINTERS_SMALL; ---
Соответственно, если IoStackLocation->Parameters.DeviceIoControl.Length будет равна sizeof(FIPS_POINTERS_LARGE), то вернется первая структура, если sizeof(FIPS_POINTERS_SMALL), то вторая.
Так по крайней мере на моей WinXP SP2
> http://www.microsoft.com/technet/archive/security/topics/is > sues/fipsdrsp.mspx?pf=true
|