- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メモリに格納される文字列のバイト数とnullのことで)
メモリに格納される文字列のバイト数とnullのことでICカードへアクセスするPC/SC関数に関する疑問
このQ&Aのポイント
- ICカードへのアクセスに関わるPC/SC関数であるSCardGetCardTypeProviderNameの動作について、特にchProviderとszProviderの値について疑問があります。
- SCardGetCardTypeProviderName関数を実行すると、変数szProviderに格納されている文字列のバイト数が変数chProviderに格納されるはずですが、実際にはchProviderには15が格納されているのに、szProviderはnullのままです。
- なぜszProviderがnullのままなのに、chProviderには値が格納されているのでしょうか?解決方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> LPTSTR szProvider = NULL; > という宣言をしてます。ポインタ宣言ですが、これがおかしいですかね? たぶんおかしい。ここに答えが格納されるんだろうと思います。確認してください。 もしそうなら、答えの格納十分な領域を用意し、zProviderがそこを指すように。
その他の回答 (1)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
回答No.1
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 型で 切ったんですが。
お礼
領域が十分に確保されていなかったのが原因のようです。 mallocでszProviderのメモリを確保したらうまくいきました。 どうもありがとうございました。