電子書籍の厳選無料作品が豊富!

ICカードへアクセスするPC/SC関数に
SCardGetCardTypeProviderNameという関数があります。
この関数を実行すると、
chProviderという変数に、szProviderに格納されている
変数のバイト数が格納されるはずなのですが、
chProviderには15が格納されているのに、
szProvider はnullなのです。
nullならchProviderは0ではないのでしょうか?
ソースコードは次のように書いています。

char szCard[] = "ICCard";
DWORD chProvider = SCARD_AUTOALLOCATE;

retSc = SCardGetCardTypeProviderName( hContext ,
szCard ,
SCARD_PROVIDER_CSP ,
      (LPTSTR)szProvider ,
          &chProvider);

OS:Win2K+Sp2 Pro,Visual Studio6.0 +SP5

どうしてなのかさっぱり分かりません。
よろしくお願いします。

A 回答 (2件)

> LPTSTR szProvider = NULL;


> という宣言をしてます。ポインタ宣言ですが、これがおかしいですかね?

たぶんおかしい。ここに答えが格納されるんだろうと思います。確認してください。

もしそうなら、答えの格納十分な領域を用意し、zProviderがそこを指すように。
    • good
    • 0
この回答へのお礼

領域が十分に確保されていなかったのが原因のようです。
mallocでszProviderのメモリを確保したらうまくいきました。

どうもありがとうございました。

お礼日時:2002/11/06 09:26

szProvider の'型'は何ですか?


察するに szProvider が示す領域に何らかの
情報が書き込まれるようですが、szProviderは
十分な大きさの領域を指していますか?

この回答への補足

お返事ありがとうございます。

LPTSTR szProvider = NULL;
という宣言をしてます。ポインタ宣言ですが、これがおかしいですかね?

MSDNには、
LONG SCardGetCardTypeProviderName(
IN SCARDCONTEXT hContext,
IN LPCTSTR szCardName,
IN DWORD dwProviderId,
OUT LPTSTR szProvider,
IN OUT LPDWORD pcchProvider
);
というヘルプがあるので、szProviderをLPTSTR 型で
切ったんですが。

補足日時:2002/11/06 08:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!