Aracılığıyla paylaş


Adlandırılmış Kanal Açma Modları

Kanal sunucusu, CreateNamedPipe işlevinin dwOpenMode parametresinde kanal erişimi, çakışma ve yazma modlarını belirtir. Kanal istemcileri, CreateFile işlevini kullanarak kanal tutamaçları için bu açık modları belirtebilir.

Erişim Modu

Kanal erişim modunu ayarlamak, kanal sunucusunun tanıtıcılarıyla ilişkili okuma veya yazma erişimini belirtmeye eşdeğerdir. Aşağıdaki tabloda, CreateNamedPipeile belirtebileceğiniz her erişim modu için eşdeğer genel erişim hakkı gösterilmektedir.

Erişim modu Eşdeğer genel erişim hakkı
PIPE_ACCESS_INBOUND GENERIC_READ
PIPE_ACCESS_OUTBOUND GENERIC_WRITE
PIPE_ACCESS_DUPLEX GENERIC_READ | GENERIC_WRITE

 

Kanal sunucusu PIPE_ACCESS_INBOUND ile bir kanal oluşturursa, kanal, kanal sunucusu için salt okunur ve kanal istemcisi için salt yazılır olur. Kanal sunucusu PIPE_ACCESS_OUTBOUND ile bir kanal oluşturursa kanal, kanal sunucusu için salt yazılır ve kanal istemcisi için salt okunur olur. PIPE_ACCESS_DUPLEX ile oluşturulan bir kanal, hem kanal sunucusu hem de kanal istemcisi için okunur/yazılır.

Adlandırılmış bir kanala bağlanmak için CreateFile kullanan kanal istemcileri, kanal sunucusu tarafından belirtilen erişim moduyla uyumlu dwDesiredAccess parametresinde bir erişim hakkı belirtmelidir. Örneğin, istemcinin, kanal sunucusunun PIPE_ACCESS_OUTBOUND ile oluşturduğu bir kanal için tanıtıcı açmak için GENERIC_READ erişimi belirtmesi gerekir. Erişim modları bir kanalın tüm örnekleri için aynı olmalıdır.

Okuma modu veya engelleme modu gibi kanal özniteliklerini okumak için kanal tutamacın FILE_READ_ATTRIBUTES erişim hakkı olmalıdır; kanal özniteliklerini yazmak için kanal tutamacını FILE_WRITE_ATTRIBUTES erişim hakkı olmalıdır. Bu erişim hakları kanal için uygun genel erişim hakkıyla birleştirilebilir: salt okunur kanal için FILE_WRITE_ATTRIBUTES ile GENERIC_READ veya salt yazma kanalı için FILE_READ_ATTRIBUTES ile GENERIC_WRITE. Erişim haklarını bu şekilde kısıtlamak kanal için daha iyi güvenlik sağlar.

Çakışan Mod

Çakışan modda, uzun okuma, yazma ve bağlama işlemleri gerçekleştiren işlevler hemen döndürülebilir. Bu, zaman alan bir işlem arka planda yürütülürken iş parçacığının diğer işlemleri gerçekleştirmesini sağlar. Çakışan modu belirtmek için FILE_FLAG_OVERLAPPED bayrağını kullanın. Daha fazla bilgi için bkz. Zaman Uyumlu ve Çakışan Giriş ve Çıkış.

CreateFile işlevi, kanal istemcisinin dwFlagsAndAttributes parametresini kullanarak boru tutamaçları için çakışan modu (FILE_FLAG_OVERLAPPED) ayarlamasına olanak tanır.

Write-Through Modu

FILE_FLAG_WRITE_THROUGH ile yazma modunu belirtin. Bu mod yalnızca farklı bilgisayarlardaki kanal istemcileri ve kanal sunucuları arasında bayt türündeki kanallara yazma işlemlerini etkiler. Yazma modunda, adlandırılmış bir kanala yazan işlevler, veriler ağ üzerinden ve uzak bilgisayardaki kanalın arabelleğine iletilene kadar dönmez. Yazma modu, her yazma işlemi için eşitleme gerektiren uygulamalar için kullanışlıdır.

Yazma modu etkinleştirilmemişse, sistem en az sayıda bayt birikene kadar veya en uzun süre geçene kadar verileri arabelleğe alarak ağ işlemlerinin verimliliğini artırır. Arabelleğe alma, sistemin birden çok yazma işlemini tek bir ağ iletiminde birleştirmesini sağlar. Bu, sistem verileri giden arabelleğe yerleştirdikten sonra ancak sistem ağ üzerinden iletmeden önce bir yazma işleminin başarıyla tamamlandığı anlamına gelir.

CreateFile işlevi, kanal istemcisinin dwFlagsAndAttributes parametresini kullanarak kanal tutamaçları için yazma modu (FILE_FLAG_WRITE_THROUGH) ayarlamasına olanak tanır. Kanal tutamacının yazma modu, kanal tutamacı oluşturulduktan sonra değiştirilemez. Yazma modu, sunucu ve istemci tanıtıcıları için aynı kanal örneğine farklı olabilir.

Kanal istemcisi, yazma modunun devre dışı bırakıldığı kanal için iletimden önceki bayt sayısını ve zaman aşımı süresini denetlemek için SetNamedPipeHandleStateişlevini kullanabilir. Salt okunur bir kanal için kanal tutamacı GENERIC_READ ve FILE_WRITE_ATTRIBUTES erişim haklarıyla açılmalıdır.